LlamaIndex 通过允许开发者将自定义信息附加到文档及其各个块,然后利用这些数据进行有组织的存储和有针对性的检索来管理文档元数据。 元数据可以包括文档标题、作者、时间戳或应用程序特定的标签(例如,“法律”或“技术”)。 此元数据与文档内容和嵌入一起在索引期间存储,从而使查询能够根据这些属性过滤或优先排序结果。 例如,通过 SimpleDirectoryReader
加载的文档可能具有元数据,例如 source="contracts/2023"
或 category="agreement"
在索引之前以编程方式添加。
在索引期间,LlamaIndex 以两种主要方式处理元数据。 首先,元数据在文档级别和块级别(当文档拆分为较小部分时)都得到保留。 例如,拆分为段落的 PDF 文档可能会保留原始文件的 author
元数据,同时添加块特定的详细信息,例如 section_number=2
。 其次,LlamaIndex 以与存储系统(如向量数据库或内存索引)集成的方式构建元数据。 这允许与语义内容一起高效地查询元数据。 开发者可以自定义元数据的处理方式——例如,通过从嵌入生成中排除某些字段或定义要索引哪些字段以进行快速过滤。
查询时,元数据充当缩小搜索结果范围的过滤器。 使用 QueryEngine
工具,开发者可以指定条件,例如 metadata_filter={"source": "research_papers"}
以仅检索来自特定来源的文档。 高级用例可能会将元数据与混合搜索结合使用——例如,在标记为 department="legal"
和 year>=2022
的文档中查找与“数据隐私”语义相关的文本。 LlamaIndex 的 API 支持运算符(例如,相等、范围)和逻辑组合 (AND/OR) 以进行精细过滤。 这种方法通过将搜索空间限制为上下文相关数据来减少不相关的结果并提高性能。