LlamaIndex 通过将大型文档(如 PDF)分解为可管理的块、将内容处理成结构化数据以及创建高效的检索索引来处理这些文档。 该系统首先解析文档以提取文本和元数据(例如,页码、章节),然后将内容拆分为称为“节点”的较小片段。 这些节点旨在保留上下文,同时避免内存限制。 例如,一个 100 页的 PDF 可能被分成 500 字的块,并带有重叠的文本,以保持章节之间的连续性。 这种分块过程确保系统可以处理超出典型内存限制的文档,同时保留章节之间有意义的关系。
在解析和分块之后,LlamaIndex 使用 OpenAI 的 text-embedding-ada-002 或开源替代方案等语言模型将文本转换为数值表示(嵌入)。 这些嵌入捕获语义意义,从而实现基于相似性的搜索。 节点及其嵌入存储在向量数据库(例如,FAISS、Pinecone)中,以实现高效查询。 还索引诸如文档标题或页面范围之类的元数据,从而允许开发人员按特定条件过滤结果。 例如,关于“隐私政策”的查询可以从 PDF 合同的第 10-15 页检索节点,系统使用语义相关性和元数据来确定结果的优先级。
LlamaIndex 还支持结合了基于关键字和基于向量的检索的混合方法。 开发人员可以将系统配置为索引诸如“责任条款”之类的术语以及嵌入,从而确保同时考虑精确匹配和语义相关性。 自定义选项包括调整块大小、选择嵌入模型以及定义元数据字段。 例如,法律文档可以使用较小的块(200 字)来隔离特定条款,而研究论文可以使用较大的块(1,000 字)来保留更广泛的上下文。 这些工具使开发人员可以根据其特定用例平衡性能、准确性和资源使用情况。