Tabby 使用指南

brew install tabbyml/tabby/tabby

更新

brew upgrade tabbyml/tabby/tabby

与其他编码 LLM 相比,Codestral 的独特之处在于其单一模型同时支持 指令跟随中间填充 兼容性。这是通过在两个数据集上同时微调基础模型实现的。这种 双重微调策略 使同一个模型在 代码补全对话任务 中都能表现出色,大大简化了模型部署堆栈。

此外,Codestral 在包含 80 多种编程语言的多样化数据集上进行训练,确保了开发人员在使用各种语言时的高质量体验。

Continue 源码分析 - 键盘快捷键

源代码:gui/src/components/mainInput/TipTapEditor.tsx

function TipTapEditor(props: TipTapEditorProps) {
  //...
  const editor: Editor = useEditor({
    extensions: [
      Document,
      History,
      Image,
      Placeholder.configure({
        placeholder: () =>
          historyLengthRef.current === 0
            ? "提出任何问题,'/' 斜杠命令,'@' 添加上下文"
            : "提出后续问题",
      }),
      Paragraph.extend({
        addKeyboardShortcuts() {
// ...

源代码:gui/src/pages/gui.tsx

数据集

数据集 尺寸 (Tokens)
RefinedWeb 500B
C4 172B
Dolma 3T
The Pile 340B
SlimPajama 627B
RedPajama2 20T
FineWeb 15T

结合 TF/IDF 或者 BM25 算法改进代码检索的效果,提高代码检索的准确性。 采用 Jaccard 相似度算法,提高代码相似性检测的效果。 使用 TreeSitter 或者 AST 技术,进行语法分析,以构建更好的交互体验。

Continue 源码分析 - transformers.js 大模型提供者

模型 语言 类型 URL
jina-embeddings-v2-base-zh 中文 Embedding https://huggingface.co/Xenova/jina-embeddings-v2-base-zh
bge-small-zh-v1.5 中文 Embedding https://huggingface.co/Xenova/bge-small-zh-v1.5
bge-base-zh-v1.5 中文 Embedding https://huggingface.co/Xenova/bge-base-zh-v1.5
bge-large-zh-v1.5 中文 Embedding https://huggingface.co/Xenova/bge-large-zh-v1.5
all-MiniLM-L6-v2 英文 Embedding https://huggingface.co/Xenova/all-MiniLM-L6-v2
bge-base-en-v1.5 英文 Embedding https://huggingface.co/Xenova/bge-base-en-v1.5
bge-reranker-base 英文 Reranker https://huggingface.co/Xenova/bge-reranker-base
TinyLlama-1.1B-Chat-v1.0 英文 LLM https://huggingface.co/Xenova/TinyLlama-1.1B-Chat-v1.0
phi-1_5_dev 英文 LLM https://huggingface.co/Xenova/phi-1_5_dev
Qwen1.5-0.5B 中文 LLM https://huggingface.co/Xenova/Qwen1.5-0.5B
Qwen1.5-1.8B 中文 LLM https://huggingface.co/Xenova/Qwen1.5-1.8B
Qwen1.5-0.5B-Chat 中文 LLM https://huggingface.co/Xenova/Qwen1.5-0.5B-Chat
codegen-350M-mono 英文 LLM https://huggingface.co/Xenova/codegen-350M-mono
codegen-350M-multi 多语言 Code LLM https://huggingface.co/Xenova/codegen-350M-multi
deepseek-coder-1.3b-base 中文 Code LLM https://huggingface.co/Xenova/deepseek-coder-1.3b-base
deepseek-coder-1.3b-instruct 中文 Code LLM https://huggingface.co/Xenova/deepseek-coder-1.3b-instruct

GraphRAG

若要了解更多关于 GraphRAG 以及它如何用于增强您的大型语言模型(LLMs)对您的私有数据进行推理的能力,请访问 Microsoft Research Blog Post

初始化您的工作区,运行 graphrag.index --init 命令

python -m graphrag.index --init --root ./ragtest

这将在 ./ragtest 目录中创建两个文件:.env 和 settings.yaml 。 .env 包含运行 GraphRAG pipeline 所需的环境变量。如果您检查该文件,您将看到定义了一个单一的环境变量,GRAPHRAG_API_KEY=<API_KEY> 。这是 OpenAI API 或 Azure OpenAI 端点的 API 密钥。您可以用您自己的 API 密钥替换它。

TypeScript 入门

安装 tsc,它是 TypeScript 的编译器。

npm i -g typescript

查看版本

tsc -v
Version 5.5.3

安装 ts-node,它是 TypeScript 的运行时。

npm i -g ts-node

查看版本

ts-node -v
v10.9.2

使用 tsc --init 命令快速创建一个 tsconfig.json 文件。

tsc --init

Created a new tsconfig.json with:                                                                                       
                                                                                                                     TS 
  target: es2016
  module: commonjs
  strict: true
  esModuleInterop: true
  skipLibCheck: true
  forceConsistentCasingInFileNames: true


You can learn more at https://aka.ms/tsconfig

创建一个 hello.ts 文件。

function hello(name: string) {
  console.log(`Hello, ${name}!`);
}

hello("TypeScript");

使用 tsc 命令编译 hello.ts 文件。

tsc hello.ts

编译后生成一个 hello.js 文件。

Continue 源码分析

通过配置创建新的 Extension,用于区别于 Continue 。

{
  "name": "continue",
  "icon": "media/icon.png",
  "version": "0.9.218",
  "displayName": "LNSoft Continue",
  "description": "The leading open-source AI code assistant",
  "publisher": "LNSoft Continue"
}

目录:extensions/vscode

package.json

package.json 由开发者手动创建和维护,主要用于定义项目的配置信息。

  • configuration
  • commands
  • keybindings
  • menus
  • views

package-lock.json

package-lock.json 由 npm 自动生成和更新,主要用于锁定依赖的具体版本,确保安装一致性。

可以通过使用 package.nls.json 文件来支持多语言。package.nls.

Visual Studio Code 快捷键

常用
显示所有命令 F1, ⇧ ⌘ P
全屏 ⌃ ⌘ F
设置 ⌘ ,
键盘快捷方式 ⌘ K ⌘ S
导航
转到文件 ⌘ P
转到工作区中的符号 ⌘ T
聚焦并选择痕迹导航 ⇧ ⌘ .
转到编辑器中的符号 ⇧ ⌘ O
转到行 ⌃ G
转到括号 ⇧ ⌘ \
转到定义 F12
转到引用 ⇧ F12
后退 ⌃ -
前进 ⌃ ⇧ -
显示
切换主侧栏可见性 ⌘ B
切换辅助侧栏可见性 ⌥ ⌘ B
切换面板可见性 ⌘ J
切换终端可见性 ⌃ `
查看资源管理器 ⇧ ⌘ E
查看搜索 ⇧ ⌘ F
查看调试 ⇧ ⌘ D
查看 GitHub Copilot 聊天 ⇧ ⌘ Space
编辑器
切分编辑器 ⌘ \
关闭编辑器 ⌘ W
选择单词 ⌘ D
选择所有的查找匹配项 ⇧ ⌘ L

Qdrant

用于下一代人工智能应用的向量搜索引擎

Qdrant(读作:quadrant)是一个向量相似性搜索引擎和向量数据库。它提供了一个生产就绪的服务,具有方便的 API 来存储、搜索和管理点 - 具有附加有效载荷的向量。Qdrant 专为扩展的过滤支持量身定制。它对所有类型的神经网络或基于语义的匹配、分面搜索和其他应用非常有用。

解决方案

docker pull qdrant/qdrant
docker run -p 6333:6333 -p 6334:6334 \
    -v $(pwd)/qdrant_storage:/qdrant/storage:z \
    qdrant/qdrant

Qdrant 现在可访问:

pip install qdrant-client

FastEmbed

FastEmbed 是一个轻量级、快速的 Python 库,专为嵌入生成而构建。

pip install -Uqq fastembed
import pandas as pd

from fastembed import TextEmbedding


supported_models = (
    pd.DataFrame(TextEmbedding.list_supported_models())
    .sort_values("size_in_GB")
    .drop(columns=["sources", "model_file", "additional_files"])
    .reset_index(drop=True)
)

print(supported_models)

Vanna.AI

使用检索增强来帮助您使用 LLM 为数据库生成准确的 SQL 查询。

Vanna 的工作过程分为两个简单步骤 - 在您的数据上训练 RAG“模型”,然后提出问题,这些问题将返回 SQL 查询,这些查询可以设置为在您的数据库上自动运行。

  • vn.train(...)

在您的数据上训练 RAG“模型”。这些方法将添加到参考语料库。

  • vn.ask(...)

问问题。这将使用参考语料库生成可以在您的数据库上运行的 SQL 查询。

启动 UI

Launch the User Interface
from vanna.flask import VannaFlaskApp
app = VannaFlaskApp(vn)
app.run()

RAG 复杂场景下的工作流程和构建知识库的解析方法

召回模式(选择数据集) → 混合检索(同时进行语义检索和关键词搜索) → 重排序(合并和归一化检索结果)

  • 召回模式主要是用于选出与用户问题最相关的数据集,在应用内关联了多个数据集时,可以使用N选1、N选M和多路等召回模式。
    • N 选 1 召回
    • N 选 M 召回
    • 多路召回
  • 语义检索是当前主流的向量检索,通过语义相关度进行匹配;关键词搜索是传统的搜索算法,用于精确匹配;混合检索是分别通过两种检索方式在文档中检索出最相关的文本。
  • 重排序模型(Rerank Model)用于对查询结果进行语义排序,在混合检索模式下的查询结果需要进行合并和归一化(将数据转换为统一的标准范围或分布,以便更好地进行比较、分析和处理),然后再一起提供给大模型。

RAGFlow 是一款基于深度文档理解构建的开源 RAG 引擎,内置了丰富地文档解析方法,可以帮助用户快速构建知识库。

  • 基于 Tokens 数进行分割
  • 问答对(两列数据,一个提出问题,另一个用于答案)
  • 简历(不进行拆分,而是将简历解析为结构化数据)
  • 手册(使用最低的部分标题作为对文档进行切片的枢轴,同一部分中的图和表不会被分割,块大小可能会很大)
  • 表格(表数据,第一行必须是列标题,列标题必须是有意义的术语,以便我们的大语言模型能够理解)
  • 论文(按章节进行拆分,例如摘要、1.1、1.2等)
  • 书籍(为每本书设置页面范围、排队无用地部分)
  • 法律(法律文件有非常严格的书写格式,使用文本特征来检测分割点)
  • 演示文稿(每个页面都将被视为一个块。 并且每个页面的缩略图都会被存储)
  • 图像(如果图片中有文字,则应用 OCR 提取文字作为其文字描述;如果 OCR 提取的文本不够,使用视觉 LLM 来获取描述)
  • One(对于一个文档,它将被视为一个完整的块,根本不会被分割)

Elmo Chat - Your AI Web Copilot

免费且无需 GPT/OpenAI 帐户和多语言支持。

✅ 总结 YouTube:通过视频快速洞察和导航。

✅ 总结 Google Docs:高效创建 Google Docs 的简洁摘要。

✅ 与 PDF 聊天:简化对大型文档的理解。

✅ 回答问题:从网页获得即时答案。

✅ 关键字探索:在浏览过程中无缝提取相关信息。

✅ 翻译:轻松将文本翻译成不同的语言。

✅ 改写段落:简化和澄清复杂的句子。

🔹 单击“添加到 Chrome”按钮并将其固定到工具栏。

🔹 单击图标或按 Cmd/Ctrl + Shift + E 激活 Elmo Chat。

🔹 Elmo Chat 将为您总结当前网页。

在 macOS 上安装 PostgreSQL

使用默认设置安装即可。

Locale 我选择了 zh_CN,在创建数据库的时候遇到了错误:The chosen LC_CTYPE setting requires encoding "EUC_CN".encoding "UTF8" does not match locale "zh_CN.eucCN"

Application Stack Builder 是一个可选的安装组件,可以用来安装其他的 PostgreSQL 工具。这里我们不需要,可以退出。

GLM-4V-9B

GLM-4V-9B 是智谱 AI 推出的最新一代预训练模型 GLM-4 系列中的开源多模态版本。 GLM-4V-9B 具备 1120 * 1120 高分辨率下的中英双语多轮对话能力,在中英文综合能力、感知推理、文字识别、图表理解等多方面多模态评测中均表现优异。

相比 CogVLM2 能力还是不如。

  • 识别手写有问题
  • 识别复杂表格有问题
  • 识别化学的答案有问题

识别中文

提示词:输出图像中的文字

贵公司被认为中标人。中标价格为:307.6万元。 请贵公司在收到本中标通知书之日起30天内,携带所有签订合同所需的资料(包括但不限于法定代表人授权书、技术规范、技术图纸等),并按照招标文件和中标人的投标文件与项目单位订立书面合同。合同签订的安排由项目单位另行通知。 请贵公司收到本中标通知书后,签收并速回函确认。

  • ❌ 漏了
  • 👍 括号 () 识别成全角

识别手写英文

提示词:识别图像上的手写英文

I think student have many after-school classes is don't good for they. So I thing the student don't have after-school classes.

AutoGen

from autogen import ConversableAgent

llm_config = {"model": "gpt-3.5-turbo"}

agent = ConversableAgent(
    name="chatbot",
    llm_config=llm_config,
    human_input_mode="NEVER",
)

reply = agent.generate_reply(
    messages=[{"content": "给我讲个笑话。", "role": "user"}]
)
print(reply)

// ...
为什么八卦杂志最爱讲床上故事?因为上面都有新闻!哈哈哈~
为什么兔子喜欢吃胡萝卜?因为胡萝卜有好处,营养丰富!