Получите данные из нескольких коллекций PGVector с помощью langchain.
У меня есть несколько коллекций в базе данных PGVector.
COLLECTION_NAME1 = "mydata1"
COLLECTION_NAME2 = "mydata2"
Теперь я использую метод PGVector для загрузки из него данных на основе коллекции.
embeddings = OpenAIEmbeddings()
store1 = PGVector(
collection_name=COLLECTION_NAME1,
connection_string=CONNECTION_STRING,
embedding_function=embeddings,
)
store2 = PGVector(
collection_name=COLLECTION_NAME2,
connection_string=CONNECTION_STRING,
embedding_function=embeddings,
)
retriever1 = store1.as_retriever()
retriever2 = store2.as_retriever()
qa = RetrievalQA.from_chain_type(llm=llm, chain_type="stuff", retriever=retriever1, return_source_documents=True)
res = qa("what is XYZ")
Теперь, если я передам конкретное имя коллекции и запрос из нее, он даст мне ответ, основанный на этой коллекции, например, в приведенном выше примере из коллекции 1 он дал ответ.
Но что теперь, если мне нужны данные из обеих коллекций, как я могу передать ретривер1 и ретривер2 одновременно или могу ли я использовать любой другой метод для получения ответа на основе любой коллекции или только любой указанной коллекции?
1 ответ
Я думаю, вы ищете Повелителя ретриверов, также известного как MergerRetriever .
from langchain.retrievers.merger_retriever import MergerRetriever
// the rest of your existing code goes here
retriever1 = store1.as_retriever()
retriever2 = store2.as_retriever()
lotr = MergerRetriever(retrievers=[retriever1, retriever2])