ran*_*mQs 5 python combiners langchain
我使用 langchain 0.0.143 创建了两个像这样的数据库(相同的嵌入):
db1 = Chroma.from_documents(
documents=texts1,
embedding=embeddings,
persist_directory=persist_directory1,
)
db1.persist()
db21 = Chroma.from_documents(
documents=texts2,
embedding=embeddings,
persist_directory=persist_directory2,
)
db2.persist()
Run Code Online (Sandbox Code Playgroud)
然后稍后访问它们
db1 = Chroma(
persist_directory=persist_directory1,
embedding_function=embeddings,
)
db2 = Chroma(
persist_directory=persist_directory2,
embedding_function=embeddings,
)
Run Code Online (Sandbox Code Playgroud)
如何组合 db1 和 db2?我想在 ConversationalRetrievalChain 设置retrieve=db.as_retriever() 中使用它们。
我尝试了一些搜索建议,但缺少一些明显的东西
更简单的选项是将两个文档加载到同一个 Chroma 对象中。它们将保留单独的元数据,因此您仍然可以知道每个嵌入来自哪个文档:
from langchain.vectorstores import Chroma
chroma_directory = 'db/'
db = Chroma(persist_directory=chroma_directory, embedding_function=embedding)
db.add_documents(documents=texts1)
db.add_documents(documents=texts2)
db.similarity_search_with_score(query="Introduction to the document")
# --> results from both documents
Run Code Online (Sandbox Code Playgroud)
更复杂的选项:默认 Chroma 存储是两个镶木地板文件和一个索引。如果您可以保证没有索引冲突,理论上您可以合并各自的 parquet 文件index/,并通过将每个文件的内容复制到与index/两个新 parquet 文件相邻的新文件夹中来合并两个文件夹。