下载
RU EN DE FR ES PT 中文

上下文与 RAG — 用户手册 | YoBench

如何在 YoBench 中使用「上下文与 RAG」模块:上传 PDF/DOCX/XLSX、嵌入提供商、LanceDB 向量检索、与 AI 聊天集成。

「上下文与 RAG」模块的用途

模块将您的文档转化为可供 AI 聊天 使用的知识库。您创建一个上下文,向其中上传文件(PDF、DOCX、XLSX、CSV、图片)或文本;模块自动将内容切分成 chunks,通过所选提供商计算 embeddings,并将向量保存到本地 LanceDB 中。当与 AI 对话时,YoBench 会检索最相关的 chunks 并注入到 system prompt —— 模型会基于您的文档作答,而不仅靠通用知识。

您将获得:

  • 命名的知识库 —— 每个项目/主题一个独立上下文。
  • 支持的格式 —— PDF、DOCX、XLSX/XLS、CSV、TXT、MD、图片(PNG、JPG、GIF、WebP)。图片与 PDF 通过内置 OCR 处理;XLSX/CSV 按工作表转为纯文本。
  • 本地 LanceDB —— 向量保存于 userData/lancedb/,每个上下文一张表(ctx_{id})。
  • 多种 embedding 提供商 —— OpenAI、LM Studio、Ollama(任何兼容 OpenAI 的端点)。同一时间仅 一个 处于激活状态;切换会将所有上下文标记为 stale 并触发异步重新索引。
  • AI 聊天集成 —— 用户首次发言时,相关 chunks 自动注入 system prompt。

数据结构

  • 上下文 —— nameembedding_provider_idembedding_model(模型快照)、vectorization_status(ready / stale / indexing / error)。
  • 上下文条目 —— 已加载内容单元:类型(text / file / image / module_ref)、content、文件元数据、chunk_count
  • 向量(LanceDB) —— 表 ctx_{id},字段 item_idchunk_indextextvector

Embedding 提供商

上下文管理器 → Embedding 提供商 添加提供商:

  • 名称 —— 自定义标签。
  • Base URL —— 兼容 OpenAI 的 /v1/embeddings 端点。示例:
    • OpenAI:https://api.openai.com/v1,模型 text-embedding-3-small
    • LM Studio(本地):http://localhost:1234/v1,模型 text-embedding-nomic-embed-text-v1.5
    • Ollama(本地):http://localhost:11434/v1,模型 bge-m3
  • API key —— 按需(本地服务器通常为空)。
  • 模型 —— 服务器端的 embedding 模型名称。

仅一个提供商被标记为 激活,用于所有上下文。切换激活提供商或模型会将现有上下文全部标记为 stale,后台执行重新索引。

Chunking 与检索

Chunking 参数固化在代码中:

  • 基于标题的分块 —— 对 Markdown 和结构化文本,分块器使用标题作为切分点,使每个分块保持为语义单元。对纯文本则回退到固定大小分块。
  • 相邻分块之间的重叠 —— 在边界处保留上下文。
  • 检索时的 Top-K —— 每次查询默认 5 个分块。

UI 不暴露这些参数 —— 已针对常见模型与多数场景调优。

检索模式

每个聊天会话可以选择以下两种检索模式之一:

  • 快速 (默认) —— 在上下文上进行混合检索(向量 + 关键词)。可在不到一秒内返回结果;适合日常提问。
  • 精确 —— 同样的混合检索,之后再用 reranker 按相关性对前 N 个候选进行重新排序。略慢一些,但在长查询或表述模糊的查询上明显更好。

支持的格式

类型 模块行为
PDF 通过内置服务进行 OCR,按页提取文本。
DOCX 通过 mammoth 提取纯文本。
XLSX、XLS、CSV 工作表转为 CSV 文本并合并。
TXT、MD 原样读取。
PNG、JPG、GIF、WebP 对图像进行 OCR 文本识别。

AI 聊天集成

AI 聊天 中为会话选择上下文。在用户首次发言时,模块会:

  1. 将您的请求作为搜索词发送到 LanceDB。
  2. 从上下文中获取 top-K 个 chunks。
  3. 将其格式化为 Markdown 块(# Reference context: {name} + ## [N] {title} + chunk 文本)。
  4. 连同标题与说明注入到 system prompt。

后续轮次不再重复检索(上下文已在 system prompt 中)。

以下情况跳过检索:

  • 上下文处于 indexing(尚未就绪)。
  • 没有激活的 embedding 提供商。
  • 上下文中的模型快照与激活提供商不一致 —— 等待重新索引完成。

此时聊天仍可正常使用,只是不会注入上下文。

全局设置

中心设置中没有专门的 context* 键 —— 全部配置存储在数据库(embedding_providerscontexts 表)中。由模块自身管理。

使用流程

1. 接入 embedding 提供商

  1. 在左侧菜单打开 上下文管理器
  2. 进入 Embedding 提供商
  3. 添加提供商:名称、Base URL、API key、模型。
  4. 标记为激活。

2. 创建上下文

  1. 在模块首页点击 新建上下文
  2. 命名(例如「产品文档」「法律语料」)。
  3. 保存。

3. 上传文档

  1. 在上下文中点击 添加文件 或将文件拖到面板上。
  2. 支持的格式:PDF、DOCX、XLSX、CSV、TXT、MD、PNG/JPG/GIF/WebP。
  3. 也可直接粘贴 文本,或通过 RSS 模块 关联文章。
  4. 等待索引完成(徽章变为「向量已就绪」)。

4. 将上下文连接到聊天

AI 聊天 的会话设置中选择该上下文。然后随意提问 —— 模型会基于您的文档作答。

5. 管理上下文

  • 移除条目 —— 从上下文中删除某个文档。
  • 重新索引 —— 强制重建向量。
  • 删除上下文 —— 同时移除其在 LanceDB 中的表。

下一步

帮助与反馈

希望支持默认本地 embeddings 或 UI 可调 chunking?通过反馈表单联系我们