知识库管理

使用 DataMate 构建和管理 RAG 知识库

知识库管理模块帮助您构建企业知识库,实现高效的向量检索和 RAG 应用。

功能概述

知识库管理模块提供:

  • 文档上传:支持多种文档格式的上传
  • 文本切分:智能文本分块策略
  • 向量化:自动将文本转换为向量
  • 向量检索:基于相似度的语义检索
  • 知识库问答:集成 RAG 的智能问答

支持的文档格式

格式说明推荐场景
TXT纯文本通用文本
PDFPDF 文档文档、报告
MarkdownMarkdown 文件技术文档
JSONJSON 数据结构化数据
CSVCSV 表格表格数据
DOCXWord 文档Office 文档

快速开始

1. 创建知识库

步骤 1:进入知识库页面

在左侧导航栏选择 知识生成

步骤 2:创建知识库

点击右上角 创建知识库 按钮。

步骤 3:配置基本信息

  • 知识库名称:例如 company_docs_kb
  • 知识库描述:描述知识库用途(可选)
  • 知识库类型:通用 / 专业领域

步骤 4:配置向量参数

  • 嵌入模型:选择嵌入模型

    • OpenAI text-embedding-ada-002
    • BGE-M3
    • 自定义模型
  • 向量维度:根据模型自动设置

  • 索引类型:IVF_FLAT / HNSW / IVF_PQ

步骤 5:配置切分策略

  • 切分方式

    • 按字符数切分
    • 按段落切分
    • 按语义切分
  • 块大小:每个文本块的大小(字符数)

  • 重叠大小:相邻块的重叠大小

步骤 6:创建知识库

点击 创建 按钮完成创建。

2. 上传文档

步骤 1:进入知识库详情

点击知识库名称进入详情页面。

步骤 2:上传文档

  1. 点击 上传文档 按钮
  2. 选择本地文件
  3. 等待上传完成

系统会自动:

  1. 解析文档内容
  2. 切分文本
  3. 生成向量
  4. 建立索引

步骤 3:查看处理状态

在文档列表中可以看到处理状态:

文件名大小状态文本块数向量化进度操作
doc1.pdf2.3 MB已完成150100%查看详情
doc2.txt156 KB处理中-50%查看详情
doc3.md45 KB等待中-0%查看详情

3. 向量检索

步骤 1:进入检索页面

在知识库详情页面,点击 向量检索 标签。

步骤 2:输入查询

在搜索框输入查询内容,例如:

如何使用 DataMate 进行数据清洗?

步骤 3:查看检索结果

系统返回最相关的文本块及其相似度分数:

排名文本块相似度来源文档操作
1DataMate 的数据清洗模块…0.92user_guide.pdf查看
2配置清洗任务…0.87tutorial.md查看
3清洗算子列表…0.81reference.txt查看

高级检索

点击 高级检索,可以:

  • 设置 Top-K:返回前 K 个结果(默认 5)
  • 设置阈值:过滤低于相似度阈值的结果
  • 过滤文档:限定检索范围
  • 重排序:使用重排序模型优化结果

4. 知识库问答(RAG)

步骤 1:启用 RAG

在知识库详情页面,点击 RAG 问答 标签。

步骤 2:配置 RAG 参数

  • 大语言模型:选择使用的 LLM
  • 检索数量:检索的文本块数量
  • 温度:控制生成随机性
  • 提示词模板:自定义问答模板

步骤 3:进行问答

在对话框输入问题,例如:

用户:DataMate 支持哪些数据清洗算子?

助手:DataMate 支持丰富的数据清洗算子,包括:
1. 数据质量算子:去重、空值处理、异常值检测...
2. 文本清洗算子:去除特殊字符、大小写转换...
3. 图像清洗算子:格式转换、质量检测...
[来源:user_guide.pdf, tutorial.md]

助手会:

  1. 检索相关文本块
  2. 基于检索内容生成答案
  3. 标注答案来源

高级功能

文本切分策略

字符切分

按固定字符数切分:

  • 块大小:500 字符
  • 重叠:50 字符

段落切分

按段落边界切分:

  • 保持段落完整性
  • 适合结构化文档

语义切分

基于语义相似度切分:

  • 保持语义完整性
  • 适合长文档
  • 需要额外模型

自定义嵌入模型

使用本地模型

  1. 部署本地嵌入模型服务
  2. 在知识库配置中选择自定义模型
  3. 填写模型服务地址

示例:

模型服务地址:http://localhost:8000/embeddings
请求格式:
{
  "texts": ["文本1", "文本2"],
  "model": "bge-m3"
}

使用 OpenAI

{
  "provider": "openai",
  "model": "text-embedding-ada-002",
  "api_key": "your-api-key"
}

知识库管理

更新知识库

当文档变更时,可以:

  1. 重新索引:重新生成所有文档的向量
  2. 增量更新:只更新变更的文档
  3. 删除文档:从知识库中删除文档

导出知识库

支持导出:

  • 文档列表:导出为 CSV
  • 向量数据:导出为 NPY/CSV
  • 元数据:导出为 JSON

知识库统计

查看知识库统计信息:

  • 文档数量:总文档数
  • 文本块数量:总文本块数
  • 向量数量:总向量数
  • 存储大小:向量存储大小
  • 更新时间:最后更新时间

多知识库管理

创建多个知识库

可以根据不同主题创建多个知识库:

  • product_kb:产品文档
  • technical_kb:技术文档
  • hr_kb:人力资源文档

联合检索

在多个知识库中同时检索:

  1. 选择要检索的知识库
  2. 执行检索
  3. 结果汇总并排序

最佳实践

1. 文档准备

上传文档前的准备工作:

  • 格式统一:转换为统一的格式(如 PDF、Markdown)
  • 清理内容:删除无关内容(页眉页脚、广告等)
  • 结构化:保持良好的文档结构
  • 元数据:添加文档元数据(作者、日期、标签等)

2. 切分策略选择

根据文档类型选择:

文档类型推荐策略块大小
技术文档段落切分-
长报告语义切分-
短文本字符切分500
代码字符切分300

3. 向量参数调优

根据需求调整:

场景向量维度索引类型
高精度1536HNSW
快速检索768IVF_FLAT
大规模512IVF_PQ

4. RAG 提示词设计

设计有效的 RAG 提示词:

你是一个专业的客服助手。请基于以下知识库内容回答用户问题。

知识库内容:
{context}

用户问题:
{question}

回答要求:
1. 只基于知识库内容回答
2. 如果知识库中没有相关信息,明确告知
3. 回答要准确、详细
4. 标注信息来源

请回答:

常见问题

Q: 文档上传后一直处于"处理中"状态?

A: 检查以下项目:

  1. 文档格式:确保文档格式被支持
  2. 文档大小:单个文档不超过 100MB
  3. 向量服务:检查向量服务是否正常运行
  4. 查看日志:查看详细错误信息

Q: 检索结果不准确?

A: 优化建议:

  1. 调整切分策略:尝试不同的切分方式
  2. 增加块大小:增加上下文信息
  3. 使用重排序:启用重排序模型
  4. 优化查询:使用更明确的查询语句
  5. 更换嵌入模型:尝试其他嵌入模型

Q: RAG 回答质量不佳?

A: 改进建议:

  1. 增加检索数量:检索更多相关文本块
  2. 优化提示词:改进问答提示词模板
  3. 更换 LLM:尝试更强大的模型
  4. 人工审核:人工审核和优化回答

Q: 如何处理大文档?

A: 大文档处理建议:

  1. 拆分文档:将大文档拆分为多个小文档
  2. 分批上传:分批上传和处理
  3. 使用语义切分:保持语义完整性
  4. 异步处理:选择异步处理模式

Q: 如何更新知识库?

A: 知识库更新方式:

  1. 单个文档更新:删除旧文档,上传新文档
  2. 批量更新:使用批量导入功能
  3. 全量重建:清空知识库,重新上传
  4. API 更新:通过 API 接口更新

API 参考

详细的 API 文档请参考:

相关文档