You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何加载LangChain中VectorstoreIndexCreator创建的索引及相关疑问

LangChain 相关问题解答

1. Embeddings 与 Indexing 的协作机制

  • Embeddings(嵌入):将文本转化为高维向量,语义相近的文本向量距离更近,让机器能理解文本的语义信息。
  • Indexing(索引):把生成的向量存入向量数据库(LangChain 默认用 Chroma),同时构建索引结构,实现后续快速的语义检索。

协作流程:

  1. 加载文档后,通过嵌入模型(默认是 OpenAI 的 text-embedding-ada-002)将所有文档片段转为向量。
  2. 向量存入数据库并生成索引,用于快速匹配查询与文档的语义相似度。
  3. 提问时,问题先转为同规格向量,通过索引找到最相似的文档向量,把对应文档内容传给 LLM 生成回答。

2. 加载已保存的索引(复用本地.pkl等文件)

你当前代码是直接创建并使用索引,若要复用已持久化的索引,无需重新生成嵌入,直接加载向量库即可:

from langchain.vectorstores import Chroma
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.chains import RetrievalQA
from langchain.llms import OpenAI
import os

os.environ["OPENAI_API_KEY"] = "sk-xxx"

# 从本地加载已保存的向量库
embedding = OpenAIEmbeddings()
vectorstore = Chroma(
    persist_directory="./custom_save_dir_path",
    embedding_function=embedding
)

# 构建问答链
chain = RetrievalQA.from_chain_type(
    llm=OpenAI(),
    chain_type="stuff",
    retriever=vectorstore.as_retriever(),
    input_key="question"
)

# 提问交互
while True:
    query = input("query: ")
    response = chain({"question": query})
    print(response['result'])
  • 无需再调用 VectorstoreIndexCreator.from_loaders(),直接用 Chroma 读取本地保存的目录即可。
  • 目录中的 .pkl 等文件是 Chroma 的数据存储文件,无需手动处理,Chroma 会自动读取。

3. OpenAI 计费规则与嵌入复用说明

  • 计费规则:
    • 嵌入模型(如 text-embedding-ada-002)按输入 Token 数量计费,价格为 $0.0001/1k Token。
    • 大语言模型(如 gpt-3.5-turbo)按输入+输出 Token 总量计费,不同模型价格不同。
  • 嵌入复用问题:
    • 若每次运行都调用 VectorstoreIndexCreator.from_loaders(),会重新加载文档并生成嵌入,每次都会消耗 OpenAI 嵌入 Token,产生费用。
    • 只要加载本地已保存的向量库,就不会重新生成嵌入,仅在提问时消耗 LLM 的 Token(处理问题和生成回答)。

内容的提问来源于stack exchange,提问作者AqashaT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 18:57:44