Skip to main content
本教程将带您了解如何使用 xParse 构建完整的 RAG(检索增强生成)应用。我们将通过三个实际场景,展示从文档处理到向量检索的完整流程。

什么是 RAG?

RAG(Retrieval-Augmented Generation,检索增强生成)是一种结合信息检索和生成式 AI 的技术。通过 RAG,大模型可以基于企业知识库进行回答,而不是仅依赖训练数据,从而提供更准确、更相关的答案。 RAG 的核心流程包括:
  1. 文档处理:将非结构化文档转换为向量表示
  2. 向量存储:将向量数据存储到向量数据库
  3. 检索查询:根据用户问题检索相关文档片段
  4. 生成回答:将检索到的内容作为上下文,让大模型生成答案
xParse 专注于解决第一步和第二步,为您提供端到端的文档处理能力。

环境准备

首先安装必要的依赖:
创建 .env 文件存储配置:
提示:XTI_APP_IDXTI_SECRET_CODE 参考 API Key,请登录 Textin 工作台 获取。示例中使用 通义千问 的大模型能力,其他模型用法类似。
下面我们将通过三个实际场景,展示如何构建 RAG 应用。

RAG 完整流程

场景 1:企业知识库构建

需求描述

某企业需要构建内部知识库,包含产品手册、技术文档、培训材料等。员工可以通过自然语言提问,快速找到相关信息。 文档特点
  • 格式多样:PDF、Word、Excel
  • 结构清晰:有明确的章节标题
  • 内容专业:技术术语较多
处理要求
  • 保持章节完整性
  • 支持语义检索
  • 快速响应查询

配置方案

针对结构化文档,我们使用 by_title 分块策略,保持章节完整性:

完整代码示例

场景 2:法律文档检索系统

需求描述

律师事务所需要构建法律文档检索系统,包含合同、判决书、法律条文等。律师可以通过关键词或自然语言快速检索相关案例和法律依据。 文档特点
  • 主要是 PDF 格式
  • 页面结构清晰
  • 需要保持页面完整性
  • 跨页内容需要关联
处理要求
  • 按页面分块,保持页面完整性
  • 支持精确检索
  • 保留文档元数据(如案件编号、日期等)

配置方案

针对 PDF 文档,我们使用 by_page 分块策略,保持页面完整性:

完整代码示例

场景 3:技术文档问答系统

需求描述

技术团队需要构建 API 文档问答系统,开发者可以通过自然语言提问,快速找到 API 使用方法、参数说明等。 文档特点
  • 主要是 Markdown 和 PDF 格式
  • 代码示例较多
  • 结构相对简单
  • 需要精确匹配 API 名称
处理要求
  • 基础分块即可
  • 支持代码块识别
  • 快速检索响应

配置方案

针对技术文档,我们使用 basic 分块策略,简单高效:

完整代码示例(集成大模型)

与向量数据库集成

Milvus 使用说明

Milvus 是一个开源的向量数据库,xParse 会自动创建集合和索引。使用 LangChain 可以更方便地进行向量检索:

Zilliz 使用说明

Zilliz 是 Milvus 的云端托管版本,使用 LangChain 集成方式类似:

检索和查询最佳实践

1. 使用 LangChain 进行检索

使用 LangChain 的向量存储可以自动处理查询向量化,无需手动调用 embed API:

2. 相似度阈值

使用 LangChain 的 similarity_search_with_score 可以获取相似度分数:

3. 混合检索

结合向量检索和关键词检索:

性能优化建议

  1. 批量处理:使用 Pipeline 的批量处理能力,一次性处理多个文档
  2. 分块策略优化:根据文档类型选择合适的分块策略,减少不必要的分块
  3. 向量模型选择:平衡精度和速度,生产环境可考虑使用 text-embedding-v3
  4. 索引优化:在 Milvus 中创建合适的索引,提升检索速度

下一步

  • 查看快速启动指南:了解 Pipeline 的基本使用方法
  • 阅读API 文档:了解详细的接口参数和配置选项
  • 探索更多场景:根据您的业务需求,定制 Pipeline 配置
如果您在构建 RAG 应用时遇到问题,可以参考这些示例代码,或联系技术支持获取帮助。