我正在尝试 langchains 及其应用程序,但作为一个新手,我无法理解嵌入和索引如何在这里真正协同工作。我知道这两个是什么,但我无法找出使用我创建并保存的索引的方法persist_directory。
我使用以下代码成功保存了 VectorstoreIndexCreator 创建的对象:
index = VectorstoreIndexCreator(vectorstore_kwargs={"persist_directory":"./custom_save_dir_path"}).from_loaders([loader])
Run Code Online (Sandbox Code Playgroud)
但我找不到使用创建的 .pkl 文件的方法。如何使用我的链中的这些文件来检索数据?
另外,openAI 中的计费是如何进行的?如果我无法使用任何保存的嵌入或索引,每次运行代码时它都会重新嵌入所有数据吗?作为初学者,我仍在学习中,任何帮助将不胜感激。
这是完整的代码:
from langchain.document_loaders import CSVLoader
from langchain.indexes import VectorstoreIndexCreator
from langchain.chains import RetrievalQA
from langchain.llms import OpenAI
import os
os.environ["OPENAI_API_KEY"] = "sk-xxx"
# Load the documents
loader = CSVLoader(file_path='data/data.csv')
#creates an object with vectorstoreindexcreator
index = VectorstoreIndexCreator(vectorstore_kwargs={"persist_directory":"./custom_save_dir_path"}).from_loaders([loader])
# Create a question-answering chain using the index
chain = RetrievalQA.from_chain_type(llm=OpenAI(), chain_type="stuff", retriever=index.vectorstore.as_retriever(), input_key="question")
# Pass a query to the chain
while True:
query = input("query: ") …Run Code Online (Sandbox Code Playgroud)