LlamaIndex 通过将原始文档的存储与其上构建的索引分开处理,来实现索引文档的长期存储。这种方法确保了可伸缩性和灵活性,允许开发者选择适合其需求的存储解决方案。文档存储在“文档存储”(document store)中,这可以是本地文件系统、云存储(如 AWS S3 或 Google Cloud Storage)或数据库。索引是针对查询进行优化的轻量级元数据结构,单独存储在“索引存储”(index store)中,例如向量数据库或简单的基于文件的系统。这种分离确保大型文档不会给索引层带来负担,并且文档或索引的更新可以独立管理。
例如,如果开发者使用 AWS S3 作为文档存储,所有原始的 PDF、文本文件或其他数据格式都会上传到 S3 存储桶中。LlamaIndex 通过唯一标识符或路径引用这些文档,而实际的索引(如向量嵌入或基于关键词的元数据)则存储在另一个单独的系统中,例如 Pinecone 或 Chroma。执行查询时,LlamaIndex 从索引存储中检索相关的文档引用,并从文档存储中获取实际内容。这种解耦允许开发者扩展原始数据的存储(例如使用经济高效的云存储),同时将索引保存在针对快速检索进行优化的高性能数据库中。
LlamaIndex 还通过增量索引支持版本控制和更新。当文档被修改时,系统可以检测到更改(例如通过文件时间戳或校验和),并仅更新索引中受影响的部分。例如,如果用户编辑了存储在 PostgreSQL 数据库中的文本文件,LlamaIndex 可以重新索引更新的部分,而无需重建整个索引。此外,开发者可以为文档存储和索引存储配置保留策略或备份策略,以确保数据持久性。通过抽象存储后端,LlamaIndex 使团队能够适应不断变化的需求——例如从本地文件系统切换到云存储——而无需彻底修改其整个索引管道。