pub struct RetrievalQA { /* private fields */ }Expand description
Question answering over a Retriever: fetches the documents relevant to the query,
then hands them with the question to a document-combining chain.
Stateless, unlike ConversationalRetrieverChain:
no memory, no question rephrasing. The combining chain receives input_documents and
question, so StuffDocument, RefineDocuments and
MapReduceDocuments QA chains all fit.
ⓘ
let qa = RetrievalQA::from_llm(OpenAI::default(), store_retriever);
let answer = qa.invoke(prompt_args! { "query" => "What is our refund policy?" }).await?;Implementations§
Source§impl RetrievalQA
impl RetrievalQA
pub fn new<R: Into<Box<dyn Retriever>>, C: Into<Box<dyn Chain>>>( retriever: R, combine_documents_chain: C, ) -> Self
Sourcepub fn from_llm<L: Into<Box<dyn LLM>>, R: Into<Box<dyn Retriever>>>(
llm: L,
retriever: R,
) -> Self
pub fn from_llm<L: Into<Box<dyn LLM>>, R: Into<Box<dyn Retriever>>>( llm: L, retriever: R, ) -> Self
Stuffs every retrieved document into one QA prompt.
Sourcepub fn with_input_key<S: Into<String>>(self, key: S) -> Self
pub fn with_input_key<S: Into<String>>(self, key: S) -> Self
Input key holding the query (default query).
Sourcepub fn with_output_key<S: Into<String>>(self, key: S) -> Self
pub fn with_output_key<S: Into<String>>(self, key: S) -> Self
Output key of the answer in execute (default output).
Sourcepub fn with_return_source_documents(self, yes: bool) -> Self
pub fn with_return_source_documents(self, yes: bool) -> Self
Adds the retrieved documents to execute’s output under
RETRIEVAL_QA_SOURCE_DOCUMENTS_KEY.
Trait Implementations§
Source§impl Chain for RetrievalQA
impl Chain for RetrievalQA
Source§fn call_stream<'a>(
&'a self,
input_variables: PromptArgs,
) -> ChainEventStream<'a>
fn call_stream<'a>( &'a self, input_variables: PromptArgs, ) -> ChainEventStream<'a>
Retrieves, then streams the combining chain’s answer.
Source§fn call<'life0, 'async_trait>(
&'life0 self,
input_variables: PromptArgs,
) -> Pin<Box<dyn Future<Output = Result<GenerateResult, ChainError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn call<'life0, 'async_trait>(
&'life0 self,
input_variables: PromptArgs,
) -> Pin<Box<dyn Future<Output = Result<GenerateResult, ChainError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Call the
Chain and receive as output the result of the generation process along with
additional information like token consumption. The input is a set of variables passed
as a PromptArgs hashmap. Read moreSource§fn execute<'life0, 'async_trait>(
&'life0 self,
input_variables: PromptArgs,
) -> Pin<Box<dyn Future<Output = Result<HashMap<String, Value>, ChainError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn execute<'life0, 'async_trait>(
&'life0 self,
input_variables: PromptArgs,
) -> Pin<Box<dyn Future<Output = Result<HashMap<String, Value>, ChainError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Execute the
Chain and return the result of the generation process
along with additional information like token consumption formatted as a HashMap.
The input is a set of variables passed as a PromptArgs hashmap.
The key for the generated output is specified by the get_output_keys
method (default key is output). Read morefn get_input_keys(&self) -> Vec<String>
fn get_output_keys(&self) -> Vec<String>
Source§fn invoke<'life0, 'async_trait>(
&'life0 self,
input_variables: PromptArgs,
) -> Pin<Box<dyn Future<Output = Result<String, ChainError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn invoke<'life0, 'async_trait>(
&'life0 self,
input_variables: PromptArgs,
) -> Pin<Box<dyn Future<Output = Result<String, ChainError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Invoke the
Chain and receive just the generation result as a String.
The input is a set of variables passed as a PromptArgs hashmap. Read moreSource§fn stream<'life0, 'async_trait>(
&'life0 self,
_input_variables: PromptArgs,
) -> Pin<Box<dyn Future<Output = Result<Pin<Box<dyn Stream<Item = Result<StreamData, ChainError>> + Send>>, ChainError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn stream<'life0, 'async_trait>(
&'life0 self,
_input_variables: PromptArgs,
) -> Pin<Box<dyn Future<Output = Result<Pin<Box<dyn Stream<Item = Result<StreamData, ChainError>> + Send>>, ChainError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Stream the
Chain and get an asynchronous stream of chain generations.
The input is a set of variables passed as a PromptArgs hashmap.
If the chain have memroy, the tream method will not be able to automaticaly
set the memroy, bocause it will not know if the how to extract the output message
out of the stram Read moreAuto Trait Implementations§
impl !RefUnwindSafe for RetrievalQA
impl !UnwindSafe for RetrievalQA
impl Freeze for RetrievalQA
impl Send for RetrievalQA
impl Sync for RetrievalQA
impl Unpin for RetrievalQA
impl UnsafeUnpin for RetrievalQA
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more