当前位置: 首页 > news >正文

LlamaIndex统一管理存储组件的容器--StorageContext

StorageContext 定义和构成

在 LlamaIndex 中,StorageContext 是一个用于统一管理和协调各种存储组件的容器。

StorageContext 是 LlamaIndex 的存储上下文容器,结构上包含

  • docstore(文档存储)
  • index_store(索引存储)
  • vector_stores(向量存储,支持多命名空间)
  • graph_store(知识图谱存储)
  • property_graph_store(属性图存储,可选)

可通过 StorageContext.from_defaults() 快速创建默认存储,也可以自定义各个存储后端(如 Redis、MongoDB、Chroma、S3 等)。

用法上

  1. 支持 persist(persist_dir=...) 方法将所有存储组件持久化到指定目录,
  2. 后续可通过 StorageContext.from_defaults(persist_dir=...) 恢复。
  3. 还支持 add_vector_store、from_dict、to_dict 等方法,便于扩展和序列化。常见用法是配合索引的创建、保存和加载,实现高效的数据管理。

示例代码

使用 LlamaIndex 构建一个基于中文法律条文的向量索引系统,结合 HuggingFace 的本地嵌入模型和 Chroma 向量数据库,实现数据的持久化存储。

import  chromadbfrom llama_index.core import StorageContext, Settings,VectorStoreIndex
from llama_index.core.schema import TextNode
from llama_index.vector_stores.chroma import ChromaVectorStore
from llama_index.embeddings.huggingface import HuggingFaceEmbedding# Embedding模型
embed_model = HuggingFaceEmbedding(model_name=r"D:\Test\LLMTrain\testllm\llm\BAAI\bge-m3",# encode_kwargs = {#     'normalize_embeddings': True,#     'device': 'cuda' if hasattr(Settings, 'device') else 'cpu'# })Settings.embed_model = embed_modelchroma_client = chromadb.PersistentClient(path=r"D:\Test\LLMTrain\day22_rag_data\chroma_db")
chroma_collection = chroma_client.get_or_create_collection(name="chinese_labor_laws",metadata={"hnsw:space": "cosine"})# 确保存储上下文正确初始化
storage_context = StorageContext.from_defaults(vector_store=ChromaVectorStore(chroma_collection=chroma_collection)
)# 制造一些测试数据
nodes = []
node = TextNode(text="为了保护劳动者的合法权益,调整劳动关系,建立和维护适应社会主义市场经济的劳动制度,促进经济发展和社会进步,根据宪法,制定本法。",id_="劳动法 第一条",metadata={"law_name": "劳动法","article": "动法","full_title": "劳动法 第一条","source_file": "官网","content_type": "legal_article"})
nodes.append(node)# 显式将节点添加到存储上下文
storage_context.docstore.add_documents(nodes)
index = VectorStoreIndex(nodes,storage_context=storage_context,show_progress=True
)
# 双重持久化保障
storage_context.persist(persist_dir=r"D:\Test\LLMTrain\day22_rag_data\storage")
index.storage_context.persist(persist_dir=r"D:\Test\LLMTrain\day22_rag_data\storage")  # <-- 新增

执行的结果:

http://www.xdnf.cn/news/283429.html

相关文章:

  • 软件架构方之旅(5):SAAM 在软件技术架构评估中的应用与发展研究
  • 2024年第十五届蓝桥杯省赛B组Python【 简洁易懂题解】
  • 二叉搜索树实现删除功能 Java
  • 【RocketMQ Broker 相关源码】- broker 启动源码(2)
  • JavaScript学习教程,从入门到精通, jQuery浏览器事件和元素位置操作语法知识点及案例代码(35)
  • 【Java学习笔记】this关键字
  • QT聊天项目DAY07
  • 单片机自动排列上料控制程序
  • 链表的面试题1
  • 只用Prettier进行格式化项目
  • 第九周作业
  • 【锂电池剩余寿命预测】RF随机森林锂电池剩余寿命预测(Pytorch完整源码和数据)
  • 碰撞检测学习笔记
  • Linux基础指令【补充】
  • 尼卡音乐 1.1.1 | 免费畅听全网音乐,支持无损下载,无广告无需注册登录
  • ROS2学习笔记|C++ 实现 ROS 2 订阅与发布功能的完整流程
  • 基于python生成taskc语言文件--时间片轮询
  • 计算机图形学中的深度学习
  • (undone) MIT6.S081 2023 学习笔记 (Day10: LAB9 fs file system)
  • 服务器部署一个千问2.5-14B、32B并发布为接口
  • CPU缓存
  • JavaScript基础-顺序流程控制
  • 函数栈帧的创建和销毁
  • 架构进阶:75页架构规划方法课件 【附全文阅读】
  • ARM寻址方式
  • USB3.0 延长线-线序
  • 模板特化详解与示例代码
  • vue-cropper实现图片裁剪
  • WordPress不支持中文TAG标签出现404的解决方法
  • [python]非零基础上手之文件操作