问题: 讲一下dify知识库的索引和对应的原理

👇 点击展开/折叠 面试背诵模板(建议先背这个) Dify知识库的索引机制通过将非结构化文档转化为可检索的结构化数据,为LLM提供精准的上下文。其核心是两种索引模式:高质量模式和经济模式。高质量模式使用Embedding模型将文本块转换为高维向量,通过计算向量间的语义相似度进行检索;经济模式则为每个文本块提取10个关键词,利用倒排索引(Inverted Index)进行基于关键词的检索。Dify提供向量检索、全文检索和混合检索三种检索策略,并不断演进,引入了如Summary Index等增强技术,通过AI生成文本块摘要并向量化,作为额外的检索层来提升精度。
---

一、索引方法:高质量模式 vs 经济模式

Dify知识库的索引机制是其检索系统的核心。它主要提供两种索引模式,分别对应不同的精度和成本需求。

1. 高质量模式 (High-Quality)

这是Dify推荐的索引方式,它通过语义理解来实现精准检索。

  • 核心原理:向量化 (Vectorization)
    • 该模式会调用Embedding模型,将文档的文本块(Chunks)转换成高维向量(Numerical Vectors)。
    • 这些向量可以被理解为高维空间中的“坐标”,语义越相近的文本,其向量在空间中的距离就越近。
  • 检索机制:语义检索 (Semantic Search)
    • 当用户提问时,系统会将问题也转换为向量。
    • 然后,系统会在向量数据库中快速查找与问题向量最相似的文本块向量,并返回这些文本块。
    • 这种方式的优势在于,它能理解文本的深层含义,而不仅仅是匹配关键词。
  • 不可降级:一旦知识库选择“高质量”模式创建,之后便无法再切换回“经济”模式。

2. 经济模式 (Economical)

这是一种轻量级、低成本的索引方式,以牺牲部分检索精度来换取效率和零Token消耗。

  • 核心原理:关键词提取
    • 系统会为每个文本块提取 10个关键词 作为该块的索引。
  • 检索机制:关键词匹配 (Keyword Matching)
    • 这种模式使用倒排索引(Inverted Index),这是一种类似搜索引擎的技术。
    • 当用户提问时,系统会通过匹配关键词来定位相关的文本块。
  • 可升级:如果“经济”模式的检索效果不理想,可以在知识库设置中将其升级为“高质量”模式。

二、检索设置 (Retrieval Settings)

在“高质量”索引模式下,Dify提供了三种检索策略供选择。

检索策略 核心原理 工作机制
向量检索 (Vector Search) 语义匹配 将用户问题向量化,与知识库中的文本块向量进行相似度计算,找出最相近的文本块。
全文检索 (Full-Text Search) 关键词匹配 构建倒排索引,直接匹配用户问题中的关键词。
混合检索 (Hybrid Search) 语义 + 关键词 同时执行向量检索和全文检索,并将两种结果进行加权合并,取长补短。

三、进阶索引技术:Summary Index

为了进一步提升检索的准确性,Dify在后续版本中引入了 Summary Index(摘要索引)。它并非替代上述模式,而是作为一种增强层。

  • 核心原理:为每个文本块生成一个由AI生成的、语义丰富的摘要(Summary)。
  • 工作机制:
    1. 对文档分块后,使用LLM为每个块生成一段精炼的摘要。
    2. 将摘要本身也进行向量化处理。
    3. 检索时,系统会同时匹配原始文本块和AI生成的摘要。
  • 优势:通过摘要可以更好地捕捉长文档或复杂文本中分散的关键信息,从而提升检索精度。该功能目前仅在“高质量”索引模式下可用。

四、原理总结

Dify知识库的索引流程可以概括为以下步骤:

  1. **文档分段 (Chunking)**:将上传的文档(如PDF、Word)按照一定策略(如固定长度或父子结构)切分成语义完整的文本块。
  2. 选择索引模式:
    • 高质量模式:使用Embedding模型将文本块向量化,存入向量数据库。
    • 经济模式:为每个文本块提取关键词,构建倒排索引。
  3. 检索与重排:根据用户查询,通过向量检索、全文检索或混合检索找到相关文本块。在“高质量”模式下,还可以启用Rerank模型对检索结果进行二次排序,进一步优化相关性。