要在 LlamaIndex 中为索引文档实现版本控制,您需要一个系统来跟踪文档随时间的变化,同时保持对特定版本的有效检索。核心方法包括存储文档的多个版本,并使用元数据来标识修订,并设计查询以定位正确的版本。这可以通过将文档元数据(如版本号或时间戳)与保存历史数据而不是覆盖它的存储策略相结合来实现。例如,每次更新文档时,您可以单独索引新版本,并使用版本标识符对其进行标记,以确保仍然可以访问旧版本。
一个实际的实现可能涉及两个关键步骤。首先,在将文档添加到 LlamaIndex 时,包括元数据字段,例如 version
(例如,递增的整数)和 last_updated
(时间戳)。例如,在索引标题为“ProjectPlan”的文档时,您可以将其存储为 version: 1
,稍后添加更新版本,版本为 version: 2
。其次,使用保留所有版本的存储后端(如数据库或文件系统)。例如,与其覆盖向量存储中的文档,不如附加一个具有唯一 ID 的新条目(例如,doc123_v2
)和更新的元数据。这确保了每个版本都独立存储,并且可以使用元数据过滤器进行检索。可以通过解析文件名(例如,document_v2.txt
)来自动提取版本信息,从而配置 LlamaIndex 的 SimpleDirectoryReader
来处理版本化的文件。
要检索特定版本,请将 LlamaIndex 的查询引擎与元数据过滤器一起使用。例如,在查询时,您可以指定 version >= 2
以排除过时的草稿,或使用 last_updated
来获取最新版本。如果使用像 Pinecone 这样的向量数据库,您可以在搜索期间按元数据字段过滤文档。此外,您可以创建一个包装类来管理版本历史记录——跟踪最新版本并将查询映射到相应的文档 ID。对于删除或回滚场景,维护一个单独的注册表(例如,JSON 文件),将文档 ID 链接到它们的版本和状态(活动/已存档)。这种方法在灵活性和最小开销之间取得了平衡,让您可以扩展版本控制,而不会使核心索引逻辑复杂化。