Получите данные из нескольких коллекций 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])
Другие вопросы по тегам