|
|
|
@ -3,7 +3,7 @@ from __future__ import annotations
|
|
|
|
|
|
|
|
|
|
from typing import Any, Dict, List
|
|
|
|
|
|
|
|
|
|
from pydantic import BaseModel, Extra, root_validator
|
|
|
|
|
from pydantic import BaseModel, Extra, Field, root_validator
|
|
|
|
|
|
|
|
|
|
from langchain.chains.base import Chain
|
|
|
|
|
from langchain.chains.combine_documents.base import BaseCombineDocumentsChain
|
|
|
|
@ -39,6 +39,8 @@ class VectorDBQA(Chain, BaseModel):
|
|
|
|
|
output_key: str = "result" #: :meta private:
|
|
|
|
|
return_source_documents: bool = False
|
|
|
|
|
"""Return the source documents."""
|
|
|
|
|
search_kwargs: Dict[str, Any] = Field(default_factory=dict)
|
|
|
|
|
"""Extra search args."""
|
|
|
|
|
|
|
|
|
|
class Config:
|
|
|
|
|
"""Configuration for this pydantic object."""
|
|
|
|
@ -127,7 +129,9 @@ class VectorDBQA(Chain, BaseModel):
|
|
|
|
|
"""
|
|
|
|
|
question = inputs[self.input_key]
|
|
|
|
|
|
|
|
|
|
docs = self.vectorstore.similarity_search(question, k=self.k)
|
|
|
|
|
docs = self.vectorstore.similarity_search(
|
|
|
|
|
question, k=self.k, **self.search_kwargs
|
|
|
|
|
)
|
|
|
|
|
answer, _ = self.combine_documents_chain.combine_docs(docs, question=question)
|
|
|
|
|
|
|
|
|
|
if self.return_source_documents:
|
|
|
|
|