知识库索引构建
定义
知识库索引构建是指在文档知识抽取完成后,将可检索的文本与其向量表示组织为搜索基础设施的过程,使知识抽取结果能够被搜索、聊天等检索型功能使用。
在 Hyper-Extract 中,索引通常作为 he parse 的默认后续产物生成:抽取出的实体、关系等知识保存在数据文件中,同时生成供向量检索使用的索引与文档存储。
在本文档中的语境
本文档中的知识库索引构建属于 he parse - Hyper-Extract 摘要 工作流的输出阶段,而不是知识抽取模板本身。he parse 负责从单个文件、标准输入或目录中的 .md、.txt 文档抽取知识;在未显式跳过索引时,它还会为这次抽取结果构建向量搜索索引。
当输入是目录时,Hyper-Extract 会先按字母顺序合并其中的 .md 与 .txt 文件,再进行抽取。因此,默认构建出的索引对应的是该次解析所形成的整体知识输出,而非只对应某一个单独文件。
默认输出与组成
一次常规解析会产生抽取数据、元数据和可选的索引目录。输出结构中的关键文件包括:
-
data.json:保存抽取出的知识,例如实体、关系等。 -
metadata.json:保存模板、语言、创建时间和更新时间等抽取元数据。 -
index/index.faiss:FAISS 向量索引文件,用于相似度检索。 -
index/docstore.json:文档存储,用于保存或关联检索时需要返回的文档内容与记录。
其中,index.faiss 与 docstore.json 共同构成面向检索的索引输出。仅有抽取数据并不等于已经具备搜索或聊天所需的向量检索能力;若要直接使用这些检索型能力,应保留或后续构建 index/ 目录。
跳过与后续补建
若当前只需要抽取结果、不需要立即搜索或聊天,可以在解析时添加 --no-index 跳过索引构建,例如:
he parse document.md -t general/biography_graph -o ./output/ -l en --no-index
跳过索引不会取代知识抽取:解析仍会生成相应的知识数据和元数据,但不会在此阶段创建向量搜索索引。之后可使用 he build-index 为已有输出补建索引。
这种拆分允许将“抽取知识”和“建立检索能力”安排在不同阶段:先完成内容解析,再在需要检索时构建索引。具体的 he build-index 参数、输入路径和覆盖规则不在本文提供的原文范围内,实际执行时应参照该命令的文档。
批量处理的效率考虑
对于大量文档,建议先集中执行抽取,并在解析阶段使用 --no-index 跳过每一批或每个任务的索引构建,待全部抽取完成后再统一执行一次 he build-index。
这一方式可避免在批量解析过程中反复构建索引,从而减少重复工作并提高整体处理效率。它适合尚未需要即时搜索或聊天、且能够接受检索能力延后可用的处理流程。
细节与边界
-
默认行为是构建索引;只有显式传入
--no-index时才跳过。 -
索引的主要用途是搜索、聊天等检索需求,不应将其与
data.json中的结构化知识抽取结果混为一谈。 -
若解析后立刻需要检索,应不要使用
--no-index,或在使用前先通过he build-index完成补建。 -
--no-index是性能与可用时机之间的取舍:它能加快当前抽取,但会使检索功能在补建前不可用。 -
索引构建不能弥补抽取质量问题;应先为文档选择合适的知识抽取模板,并为模板模式提供与文档匹配的语言参数,以获得更可靠的知识输入。