如何在 VectorstoreIndexCreator 之后为 CSV 创建 Chromadb?

问题描述 投票:0回答:1

我已经成功创建了一个聊天机器人,可以通过引用 csv 来回答问题。我的代码如下,

loader = CSVLoader(file_path='data.csv') # load the csv
index_creator = VectorstoreIndexCreator() # initiation
docsearch = index_creator.from_loaders([loader]) # embedding

我的链条如下,

chain = RetrievalQA.from_chain_type(llm=OpenAI(model_name="gpt-3.5-turbo", temperature=0), chain_type="stuff", retriever=docsearch.vectorstore.as_retriever(), input_key="question")

到目前为止一切都很完美。

但我正在尝试创建一个应用程序,通过引用此 csv 来解决问题,因此我想将矢量化数据存储到 chromadb 中,可以检索该数据而无需再次嵌入。

我明白(如果我错了请告诉我)docsearch.vectorstore已经是一个chromadb。当我

print(docsearch.vectorstore)
时,它回来了,

<langchain_community.vectorstores.chroma.Chroma object at 0x13e079130>

但是它如何将其存储为文件呢?就像嵌入 txt 或 pdf 文件后所做的那样,将其保存在文件夹中。

embedding = OpenAIEmbeddings(openai_api_key=openai_api_key)
# embedding = OpenAIEmbeddings(openai_api_key=openai_api_key, model_name='text-embedding-3-small')

persist_directory = "embedding/chroma"

# Create a Chroma vector database for the current states after embedding
vectordb = Chroma(
    persist_directory = persist_directory,
    embedding_function = embedding)
vectordb.persist() 

database = Chroma.from_documents(doc, embedding=embedding, persist_directory = persist_directory)

然后你就可以在persist_directory中找到数据库文件了。

所以,我的问题是,如何使用 csv 数据实现类似的过程?我用谷歌搜索过,例如有没有办法在langchain中加载通过VectorstoreIndexCreator创建的索引?它是如何运作的? 但这似乎不是答案。因为答案称为“文档”和“嵌入”,我似乎无法在操作中找到它们。

非常感谢任何帮助。

python excel csv embedding chromadb
1个回答
0
投票

请尝试这个

from langchain.chains import RetrievalQA
chain = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=docsearch.vectorstore.as_retriever(),
    # input_key="question"
)

print(chain.invoke("question"))
© www.soinside.com 2019 - 2024. All rights reserved.