导航菜单

  • 1.概述
  • 2.功能与能力
  • 3.系统架构
  • 4.部署与配置
  • 5.Docker 部署
  • 6.环境配置
  • 7.外部服务设置
  • 8.AI模型与LLM配置
  • 9.核心系统
  • 10.文档处理流水线
  • 11.RAG引擎与搜索
  • 12.知识库管理系统
  • 13.对话与对话系统
  • 14.翻译与跨语言支持
  • 15.用户界面
  • 16.主应用界面
  • 17.管理仪表盘
  • 18.文档编写界面
  • 19.知识库内容管理
  • 20.国际化与本地化
  • 21.管理功能
  • 22.用户与团队管理
  • 23.文件和存储管理
  • 24.知识库管理
  • 25.系统监控与健康状态
  • 26.API 参考
  • 27.知识库API
  • 28.对话与聊天API
  • 29.文件管理API
  • 30.管理与Admin API
  • 31.开发指南
  • 32.前端开发
  • 33.后端服务架构
  • 34.数据库模式与模型
  • 35.基础设施与文档
  • 36.快速入门指南
  • 1. 架构概述
    • 1.1 核心搜索架构
    • 1.2 搜索在对话系统中的集成
  • 2. 查询处理流水线
    • 2.1 文本处理与分词
    • 2.2 查询增强流水线
    • 2.3 查询处理流程
  • 3. 混合搜索实现
    • 3.1 搜索表达式类型
    • 3.2 搜索执行流程
    • 3.3 字段提升配置
    • 3.4 相似度阈值
  • 4. 重排序机制
    • 4.1 重排序方法
    • 4.2 重排序流程
    • 4.3 重排序参数
  • 5. 结果处理与引用
    • 5.1 引用插入
    • 5.2 结果装饰
  • 6. 性能优化
    • 6.1 优化策略
    • 6.2 性能指标
  • 7. 错误处理与回退
    • 7.1 错误类型
    • 7.2 回退策略
  • 8. 总结

# Ragflow-Plus RAG 引擎与搜索教程

本文档涵盖了为 Ragflow-Plus 的知识检索功能提供支持的混合检索增强生成(RAG)引擎和搜索系统。系统结合全文搜索和向量相似度搜索,为聊天交互和知识库查询提供准确、上下文相关的文档检索。

有关文档处理和知识库管理的信息,请参阅 知识库管理系统。有关聊天功能和对话管理,请参阅 对话与对话系统。

1. 架构概述 #

RAG 引擎实现了复杂的混合搜索架构,通过多个分析、检索和排序阶段处理自然语言查询,以提供相关的文档块用于响应生成。

1.1 核心搜索架构 #

RAG 引擎采用分层架构,包含以下主要层次:

┌─────────────────────────────────────────┐
│      查询处理层 (Query Processing Layer)  │
│  ┌──────────┐  ┌──────────┐  ┌──────┐  │
│  │ 查询处理 │  │ 词权重  │  │ 分词 │  │
│  │          │  │          │  │      │  │
│  └──────────┘  └──────────┘  └──────┘  │
└─────────────────────────────────────────┘
              ↕
┌─────────────────────────────────────────┐
│      搜索引擎层 (Search Engine Layer)        │
│  ┌──────────┐  ┌──────────┐  ┌──────┐  │
│  │ 全文检索 │  │ 向量检索 │  │ 融合 │  │
│  │          │  │          │  │      │  │
│  └──────────┘  └──────────┘  └──────┘  │
└─────────────────────────────────────────┘
              ↕
┌─────────────────────────────────────────┐
│      存储层 (Storage Layer)                │
│  ┌──────────┐  ┌──────────┐  ┌──────┐  │
│  │ ES 索引  │  │ 嵌入模型 │  │ 文档 │  │
│  │          │  │          │  │ 存储 │  │
│  └──────────┘  └──────────┘  └──────┘  │
└─────────────────────────────────────────┘
              ↕
┌─────────────────────────────────────────┐
│      排序层 (Ranking Layer)                │
│  ┌──────────┐  ┌──────────┐  ┌──────┐  │
│  │ 重排序   │  │ 引用插入 │  │ 结果 │  │
│  │          │  │          │  │ 优化 │  │
│  └──────────┘  └──────────┘  └──────┘  │
└─────────────────────────────────────────┘

1.2 搜索在对话系统中的集成 #

搜索系统与对话系统紧密集成,提供端到端的检索增强生成流程:

dialog_service.chat()
    ↙              ↘
Knowledgebase    LLMBundle
Service          embedding model
    ↓              ↓
settings.retrievaler.retrieval()
    ↓
Dealer.search()
    ↓
Dealer.rerank()
    ↓
kb_prompt()
    ↓
LLMBundle chat model
    ↓
insert_citations()
    ↓
decorate_answer()

2. 查询处理流水线 #

查询处理流水线通过多个分析阶段转换自然语言输入,为全文和向量检索生成优化的搜索表达式。

2.1 文本处理与分词 #

RagTokenizer 类实现了复杂的中英文混合分词系统,支持:

  • 中文分词:使用 jieba 进行中文分词
  • 英文分词:处理英文单词和短语
  • 混合处理:处理中英文混合文本
  • 停用词过滤:移除无意义的停用词
  • 词干提取:提取词干以提高匹配准确性

2.2 查询增强流水线 #

查询增强流水线通过以下步骤优化查询:

  1. 词权重计算:使用 term_weight.Dealer.weights() 计算查询词的权重
  2. 同义词扩展:使用 synonym.Dealer.lookup() 查找同义词
  3. 分词处理:使用 RagTokenizer.tokenize() 进行分词
  4. 查询构建:生成优化的搜索表达式

2.3 查询处理流程 #

FulltextQueryer.question()
    ↙              ↘              ↘
term_weight    synonym.Dealer   RagTokenizer
Dealer.weights()  .lookup()     .tokenize()
    ↓              ↓              ↓
search.Dealer.search()
    ↙              ↘              ↘
MatchTextExpr   MatchDenseExpr  FusionExpr
    ↓              ↓              ↓
DocStoreConnection.search()
    ↓
Elasticsearch indices

3. 混合搜索实现 #

系统实现了混合搜索,结合全文搜索和向量相似度搜索,以提供最佳的检索结果。

3.1 搜索表达式类型 #

系统支持三种主要的搜索表达式类型:

表达式类型 用途 说明
MatchTextExpr 全文检索 基于关键词的文本匹配
MatchDenseExpr 向量检索 基于嵌入向量的相似度搜索
FusionExpr 混合检索 融合全文和向量检索结果

3.2 搜索执行流程 #

混合搜索的执行流程包括以下步骤:

  1. 过滤器构建:从请求参数构建 Elasticsearch 过滤器(get_filters())
  2. 查询处理:通过 FulltextQueryer.question() 生成 MatchTextExpr
  3. 向量生成:通过 get_vector() 使用嵌入模型创建查询向量
  4. 融合设置:配置 FusionExpr,向量权重 95%,文本权重 5%
  5. 执行:通过 DocStoreConnection.search() 运行混合搜索
  6. 回退:如果没有结果,使用放宽的阈值重试

3.3 字段提升配置 #

系统支持字段提升配置,以提高特定字段的搜索权重:

  • 文档名称:docnm_kwd 字段提升
  • 标题:title_tks 字段提升
  • 内容:content_with_weight 字段提升

3.4 相似度阈值 #

系统使用相似度阈值来控制检索结果的准确性:

  • 默认阈值:0.1(可配置)
  • 动态调整:根据查询结果动态调整阈值
  • 回退机制:如果结果不足,自动降低阈值重试

4. 重排序机制 #

系统使用重排序机制优化检索结果,提高结果的相关性。

4.1 重排序方法 #

系统支持两种重排序方法:

  1. 基于规则的重排序:使用 search.Dealer.rerank() 进行基于规则的重排序
  2. 基于模型的重排序:使用 search.Dealer.rerank_by_model() 进行基于模型的重排序

4.2 重排序流程 #

检索结果 (Search Results)
    ↓
重排序处理 (Reranking)
    ↙              ↘
基于规则        基于模型
rerank()        rerank_by_model()
    ↓              ↓
优化后的结果
    ↓
引用插入 (insert_citations())

4.3 重排序参数 #

重排序过程使用以下参数:

  • top_k:返回的顶级结果数量
  • 相似度阈值:结果的最小相似度
  • 权重配置:不同字段的权重设置

5. 结果处理与引用 #

系统对检索结果进行处理,并插入引用信息,以便用户了解答案的来源。

5.1 引用插入 #

系统使用 search.Dealer.insert_citations() 在生成的答案中插入引用:

  • 文档引用:引用来源文档
  • 位置信息:引用文档中的具体位置
  • 页码信息:引用文档的页码

5.2 结果装饰 #

系统使用 decorate_answer() 对答案进行装饰:

  • 格式化:格式化答案文本
  • 引用标记:添加引用标记
  • 元数据:添加文档元数据

6. 性能优化 #

系统采用多种性能优化策略,提高搜索效率。

6.1 优化策略 #

  • 缓存机制:缓存常用查询结果
  • 并行处理:并行执行多个搜索操作
  • 索引优化:优化 Elasticsearch 索引结构
  • 查询优化:优化查询表达式

6.2 性能指标 #

系统监控以下性能指标:

  • 查询延迟:查询响应时间
  • 结果质量:检索结果的相关性
  • 吞吐量:单位时间处理的查询数
  • 资源使用:CPU、内存使用情况

7. 错误处理与回退 #

系统包含完善的错误处理和回退机制。

7.1 错误类型 #

系统处理以下类型的错误:

  • 查询错误:查询语法错误
  • 向量生成错误:嵌入向量生成失败
  • 存储错误:Elasticsearch 连接失败
  • 超时错误:查询超时

7.2 回退策略 #

  • 阈值调整:自动降低相似度阈值
  • 查询简化:简化查询表达式
  • 结果合并:合并多个查询结果
  • 错误记录:详细记录错误信息

8. 总结 #

RAG 引擎与搜索系统是 Ragflow-Plus 的核心组件,负责从知识库中检索相关信息并生成回答。通过混合搜索、重排序和引用插入,系统能够提供高质量的知识检索和生成服务。

关键特性:

  • 混合搜索:结合全文和向量检索
  • 智能查询处理:查询增强和优化
  • 重排序机制:提高结果相关性
  • 引用支持:提供答案来源信息
  • 性能优化:高效的搜索处理
  • 错误处理:完善的错误处理和回退机制

有关使用处理后的文档进行检索的详细信息,请参阅 文档处理流水线。

访问验证

请输入访问令牌

Token不正确,请重新输入