要使用新数据更新和重新训练 LlamaIndex,您需要将新信息添加到现有数据集,并重建或扩展索引。 LlamaIndex 将数据构建到索引中(如 VectorStoreIndex
),这些索引依赖于嵌入和检索逻辑。当新数据到达时,您可以从头开始重建索引,或者将新的节点(数据块)增量插入到存储上下文中。该过程通常涉及加载新数据,将其转换为节点,更新索引,并持久化更改以供将来使用。这确保了索引反映了查询或检索任务的最新信息。
首先,使用 LlamaIndex 的数据连接器(例如,用于文件的 SimpleDirectoryReader
)加载新数据。将原始数据转换为 Document
对象,然后使用文本分割器或节点解析器将它们分割成更小的节点。 对于增量更新,使用 index.insert_nodes()
将这些节点直接添加到现有索引。 例如,如果您有一个 VectorStoreIndex
,则可以创建一个 SentenceSplitter
将新文档分块为节点,并将它们插入到索引的存储上下文中。 如果完全重建,请合并旧数据和新数据,重新处理所有文档,然后重新创建索引。 诸如 StorageContext
之类的工具可帮助管理持久化数据,从而允许您在附加新节点之前从磁盘加载现有索引。
更新索引后,使用您选择的嵌入模型(例如,OpenAI 的 text-embedding-ada-002
)为新节点重新生成嵌入。 使用 index.storage_context.persist(persist_dir="your_directory")
持久化更新后的索引,以保存修改后的嵌入和元数据。 如果使用像 Chroma 或 Pinecone 这样的向量数据库,请确保将新的嵌入添加到数据库中。 为了获得更好的性能,请使用示例查询测试检索准确性,以验证新数据是否已正确集成。 请注意,LlamaIndex 不会以传统的 ML 意义上的方式“重新训练”,而是重建或扩展检索结构。 如果您的用例需要微调底层 LLM(例如,GPT),那是一个涉及模型训练管道的独立过程,而不是 LlamaIndex 本身。 专注于维护一致的预处理(分块、元数据),以确保新数据的无缝集成。