如何将LlamaIndex的ObjectIndex存储到文件系统以重复使用?
如何持久化与复用LlamaIndex的ObjectIndex
1. 创建时指定存储上下文并完成持久化
创建ObjectIndex时,先初始化StorageContext并指定存储目录,再将其传入创建方法,最后执行持久化操作即可:
from llama_index import ObjectIndex, StorageContext from llama_index.objects import SQLTableNodeMapping # 初始化存储上下文,指定索引保存路径 storage_context = StorageContext.from_defaults(persist_dir="./object_index_storage") # 假设你已准备好table_objects和sql_table_node_mapping obj_index = ObjectIndex.from_objects( table_objects, sql_table_node_mapping, storage_context=storage_context, ) # 执行持久化 storage_context.persist()
2. 加载已持久化的ObjectIndex
后续需要复用索引时,直接从指定目录加载存储上下文,再重建ObjectIndex:
from llama_index import ObjectIndex, StorageContext from llama_index.objects import SQLTableNodeMapping # 加载已保存的存储上下文 storage_context = StorageContext.from_defaults(persist_dir="./object_index_storage") # 注意:节点映射配置必须和创建索引时完全一致 sql_table_node_mapping = SQLTableNodeMapping(...) # 复用创建时的相同配置 # 加载ObjectIndex obj_index = ObjectIndex.from_storage( storage_context, sql_table_node_mapping, ) # 正常创建查询引擎使用即可 query_engine = obj_index.as_query_engine(...)
关键注意事项
- 节点映射(如
SQLTableNodeMapping)的配置必须与创建索引时完全一致,否则加载会失败 - 确保每次加载时的
persist_dir路径与持久化时的路径一致 - 若索引使用了自定义LLM或嵌入模型,加载时需保持相同的模型配置
内容的提问来源于stack exchange,提问作者Twixen
相关产品推荐
相关产品推荐

