上下文与 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。
数据结构
- 上下文 ——
name、embedding_provider_id、embedding_model(模型快照)、vectorization_status(ready/stale/indexing/error)。 - 上下文条目 —— 已加载内容单元:类型(
text/file/image/module_ref)、content、文件元数据、chunk_count。 - 向量(LanceDB) —— 表
ctx_{id},字段item_id、chunk_index、text、vector。
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。
- OpenAI:
- API key —— 按需(本地服务器通常为空)。
- 模型 —— 服务器端的 embedding 模型名称。
仅一个提供商被标记为 激活,用于所有上下文。切换激活提供商或模型会将现有上下文全部标记为 stale,后台执行重新索引。
Chunking 与检索
Chunking 参数固化在代码中:
- 基于标题的分块 —— 对 Markdown 和结构化文本,分块器使用标题作为切分点,使每个分块保持为语义单元。对纯文本则回退到固定大小分块。
- 相邻分块之间的重叠 —— 在边界处保留上下文。
- 检索时的 Top-K —— 每次查询默认 5 个分块。
UI 不暴露这些参数 —— 已针对常见模型与多数场景调优。
检索模式
每个聊天会话可以选择以下两种检索模式之一:
- 快速 (默认) —— 在上下文上进行混合检索(向量 + 关键词)。可在不到一秒内返回结果;适合日常提问。
- 精确 —— 同样的混合检索,之后再用 reranker 按相关性对前 N 个候选进行重新排序。略慢一些,但在长查询或表述模糊的查询上明显更好。
支持的格式
| 类型 | 模块行为 |
|---|---|
| 通过内置服务进行 OCR,按页提取文本。 | |
| DOCX | 通过 mammoth 提取纯文本。 |
| XLSX、XLS、CSV | 工作表转为 CSV 文本并合并。 |
| TXT、MD | 原样读取。 |
| PNG、JPG、GIF、WebP | 对图像进行 OCR 文本识别。 |
AI 聊天集成
在 AI 聊天 中为会话选择上下文。在用户首次发言时,模块会:
- 将您的请求作为搜索词发送到 LanceDB。
- 从上下文中获取 top-K 个 chunks。
- 将其格式化为 Markdown 块(
# Reference context: {name}+## [N] {title}+ chunk 文本)。 - 连同标题与说明注入到 system prompt。
后续轮次不再重复检索(上下文已在 system prompt 中)。
以下情况跳过检索:
- 上下文处于
indexing(尚未就绪)。 - 没有激活的 embedding 提供商。
- 上下文中的模型快照与激活提供商不一致 —— 等待重新索引完成。
此时聊天仍可正常使用,只是不会注入上下文。
全局设置
中心设置中没有专门的 context* 键 —— 全部配置存储在数据库(embedding_providers 与 contexts 表)中。由模块自身管理。
使用流程
1. 接入 embedding 提供商
- 在左侧菜单打开 上下文管理器。
- 进入 Embedding 提供商。
- 添加提供商:名称、Base URL、API key、模型。
- 标记为激活。
2. 创建上下文
- 在模块首页点击 新建上下文。
- 命名(例如「产品文档」「法律语料」)。
- 保存。
3. 上传文档
- 在上下文中点击 添加文件 或将文件拖到面板上。
- 支持的格式:PDF、DOCX、XLSX、CSV、TXT、MD、PNG/JPG/GIF/WebP。
- 也可直接粘贴 文本,或通过 RSS 模块 关联文章。
- 等待索引完成(徽章变为「向量已就绪」)。
4. 将上下文连接到聊天
在 AI 聊天 的会话设置中选择该上下文。然后随意提问 —— 模型会基于您的文档作答。
5. 管理上下文
- 移除条目 —— 从上下文中删除某个文档。
- 重新索引 —— 强制重建向量。
- 删除上下文 —— 同时移除其在 LanceDB 中的表。
下一步
帮助与反馈
希望支持默认本地 embeddings 或 UI 可调 chunking?通过反馈表单联系我们。