Study/AI
[LangChain] MultiQueryRetriever, 사용자 질문 확장하기
728x90
반응형
주어진 사용자 입력 쿼리에 대해 다양한 관점에서 여러 쿼리를 자동으로 생성하는 LLM을 활용해 프롬프트를 만들어준다.
from langchain_community.document_loaders import TextLoader
from langchain_text_splitters import CharacterTextSplitter
text_splitter = CharacterTextSplitter(
separator="\n",
chunk_size=1, # seperator로만 청크를 나누게 된다.
chunk_overlap=0
)
loader = TextLoader("../docs/travel.txt", encoding="utf-8")
documents = loader.load_and_split(text_splitter=text_splitter)
from langchain_chroma import Chroma
db = Chroma.from_documents(documents, hf_embeddings)
from langchain.retrievers.multi_query import MultiQueryRetriever
retriever = MultiQueryRetriever.from_llm(retriever=db.as_retriever(), llm=llm)
=>
- 여행 일정을 어떻게 짜면 좋을까요?
- 여행 준비를 위해 필요한 단계는 무엇인가요?
- 추천하는 여행 코스나 팁이 있을까요?
이렇게 세 가지로 질문해 답을 가져오는것을 볼 수 있다.
[chain/start] [retriever:MultiQueryRetriever > chain:RunnableSequence] Entering Chain run with input:
{
"question": "여행 계획 세우기"
}
[chain/start] [retriever:MultiQueryRetriever > chain:RunnableSequence > prompt:PromptTemplate] Entering Prompt run with input:
{
"question": "여행 계획 세우기"
}
[chain/end] [retriever:MultiQueryRetriever > chain:RunnableSequence > prompt:PromptTemplate] [1ms] Exiting Prompt run with output:
[outputs]
[llm/start] [retriever:MultiQueryRetriever > chain:RunnableSequence > llm:ChatOpenAI] Entering LLM run with input:
{
"prompts": [
"Human: You are an AI language model assistant. Your task is \n to generate 3 different versions of the given user \n question to retrieve relevant documents from a vector database. \n By generating multiple perspectives on the user question, \n your goal is to help the user overcome some of the limitations \n of distance-based similarity search. Provide these alternative \n questions separated by newlines. Original question: 여행 계획 세우기"
]
}
[llm/end] [retriever:MultiQueryRetriever > chain:RunnableSequence > llm:ChatOpenAI] [1.57s] Exiting LLM run with output:
{
"generations": [
[
{
"text": "여행 일정을 어떻게 짜면 좋을까요? \n여행 준비를 위해 필요한 단계는 무엇인가요? \n추천하는 여행 코스나 팁이 있을까요? ",
"generation_info": {
"finish_reason": "stop",
"logprobs": null
...
"여행 준비를 위해 필요한 단계는 무엇인가요? ",
"추천하는 여행 코스나 팁이 있을까요?"
]
}
728x90
반응형
'Study > AI' 카테고리의 다른 글
[LangChain] Hub와 RAG실습 (3) | 2025.08.24 |
---|---|
[LangChain] 검색기, Retriever의 search_type, search_kwargs 알아보기 (0) | 2025.08.24 |
[LangChain] 검색기, Retriever 개념. similarity_search와 차이점 (0) | 2025.08.24 |
[LangChain] 벡터스토어(VectorStore) ChromaDB, FaissDB 저장하고 불러오기 (1) | 2025.08.21 |
[LangChain] 벡터스토어(VectorStore)란, Chroma DB (1) | 2025.08.21 |
댓글