0
0
LangChainframework~20 mins

Multi-query retrieval for better recall in LangChain - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Multi-query Retrieval Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
component_behavior
intermediate
2:00remaining
What is the output of this multi-query retrieval code snippet?

Consider this LangChain code that performs multi-query retrieval to improve recall. What will be the printed output?

LangChain
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings
from langchain.chains import RetrievalQA
from langchain.llms import OpenAI

embeddings = OpenAIEmbeddings()
vectorstore = FAISS.load_local("my_faiss_index", embeddings)

retriever = vectorstore.as_retriever(search_kwargs={"k": 2})

queries = ["What is AI?", "Explain machine learning."]

results = []
for query in queries:
    qa = RetrievalQA.from_chain_type(llm=OpenAI(), chain_type="stuff", retriever=retriever)
    answer = qa.run(query)
    results.append(answer)

print(results)
AA list of two answer strings, each answering one query
BA single string combining answers to both queries
CA list of two empty strings
DRaises a TypeError because 'retriever' is not iterable
Attempts:
2 left
💡 Hint

Think about how the loop runs the retrieval QA chain separately for each query and collects answers.

📝 Syntax
intermediate
1:30remaining
Which option correctly initializes a multi-query retriever with LangChain?

Choose the correct code snippet that sets up a retriever to handle multiple queries with LangChain's FAISS vector store.

Aretriever = vectorstore.as_retriever(k=3)
Bretriever = vectorstore.as_retriever(search_k=3)
Cretriever = vectorstore.as_retriever({"k": 3})
Dretriever = vectorstore.as_retriever(search_kwargs={"k": 3})
Attempts:
2 left
💡 Hint

Check the correct parameter name for passing search options in LangChain retrievers.

🔧 Debug
advanced
2:00remaining
Why does this multi-query retrieval code raise an error?

Given this code snippet, why does it raise an error?

LangChain
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings

embeddings = OpenAIEmbeddings()
vectorstore = FAISS.load_local("index_dir", embeddings)

queries = ["Define AI", "What is NLP?"]

retriever = vectorstore.as_retriever(search_kwargs={"k": 2})

answers = [retriever.run(query) for query in queries]
print(answers)
ATypeError because queries is not iterable
BSyntaxError due to missing colon
C'Retriever' object has no attribute 'run' error
DNo error, prints list of answers
Attempts:
2 left
💡 Hint

Check if the retriever object supports a 'run' method.

state_output
advanced
2:00remaining
What is the value of 'combined_answers' after running this multi-query retrieval code?

Analyze the code and determine the value of the variable combined_answers after execution.

LangChain
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings
from langchain.chains import RetrievalQA
from langchain.llms import OpenAI

embeddings = OpenAIEmbeddings()
vectorstore = FAISS.load_local("faiss_index", embeddings)
retriever = vectorstore.as_retriever(search_kwargs={"k": 1})

queries = ["Explain AI", "What is deep learning?"]

answers = []
for q in queries:
    qa_chain = RetrievalQA.from_chain_type(llm=OpenAI(), chain_type="stuff", retriever=retriever)
    answers.append(qa_chain.run(q))

combined_answers = " | ".join(answers)
AA list of empty strings
BA single string combining two answers separated by ' | '
CAn empty string
DA list of two answer strings
Attempts:
2 left
💡 Hint

Look at how the answers list is joined into a single string.

🧠 Conceptual
expert
1:30remaining
Why use multi-query retrieval in LangChain for better recall?

Which reason best explains why multi-query retrieval improves recall in LangChain applications?

AIt allows querying multiple related questions separately to gather more relevant documents
BIt speeds up retrieval by running queries in parallel
CIt reduces the number of documents retrieved to save memory
DIt merges all queries into one to simplify processing
Attempts:
2 left
💡 Hint

Think about how splitting a complex question into parts affects document retrieval.