강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

핑핑님의 프로필 이미지
핑핑

작성한 질문수

RAG를 활용한 LLM Application 개발 (feat. LangChain)

3.2 LangChain과 Chroma를 활용한 RAG 구성

문서 못 찾음

작성

·

13

0

%pip install --upgrade --quiet docx2txt langchain-community
from langchain_community.document_loaders import Docx2txtLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter

text_splitter = RecursiveCharacterTextSplitter(chunk_size=1500, chunk_overlap=200) # 사이즈는 하나의 청크가 가지는 토큰 수, 오버랩을 통해 유사도 검색시 우리가 원하는 문서 가져오는 확률 높임(앞뒤 문맥 주기 가능)

loader = Docx2txtLoader("./tax.docx")
document_list = loader.load_and_split(text_splitter=text_splitter)
%pip install -qU langchain-text-splitters
document_list
len(document_list)
from langchain_openai import OpenAIEmbeddings
from dotenv import load_dotenv

load_dotenv()

embedding = OpenAIEmbeddings(model="text-embedding-3-large")
%pip install -qU langchain-chroma
from langchain_chroma import Chroma

# database = Chroma.from_documents(documents=document_list, embedding=embedding, collection_name="chroma-tax", persist_directory="./chroma")
database = Chroma(collection_name="chroma-tax", persist_directory="./chroma", embedding_function=embedding)
print(database._collection.count())   # 문서 개수
query = "연봉 5천만원인 직장인의 소득세는 얼마인가요?"
# reviewed_docs = database.similarity_search(query, k=3) 
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(model="gpt-4o")
%pip install -U langchain langchainhub --quiet
from langchain import hub

prompt = hub.pull("rlm/rag-prompt")
prompt
# 이제 QA 체인 만들기
from langchain.chains import RetrievalQA

qa_chain = RetrievalQA.from_chain_type(llm=llm, retriever=database.as_retriever(), chain_type_kwargs={"prompt" : prompt})
ai_messgae = qa_chain.invoke({"query" : query})
ai_messgae
image.pngimage.png

인강을 들으며 코드를 동일하게 작성하였는데 관련 문서 내용을 찾지 못하여 답변이 저렇게 나오는데 어느 부분이 문제인지 모르겠습니다.

답변 2

0

강병진님의 프로필 이미지
강병진
지식공유자

query = '연봉 5천만원인 직장인의 소득세는 얼마인가요?'
retriever = database.as_retriever()
retriever.invoke(query)

위 코드를 실행했을 때 어떤 결과가 나오는지 공유해주실 수 있을까요?

핑핑님의 프로필 이미지
핑핑
질문자

image.png

이런식으로 뜹니다 !

강병진님의 프로필 이미지
강병진
지식공유자

공유 감사합니다! 문서는 가져오는데 우리가 원하는 문서를 잘 못가져오는 중입니다. 질문에 대한 답변은 3.5, 3.6강에 있습니다.

0

안녕하세요, 인프런 AI 인턴입니다. 핑핑님께서 질문하신 문제는 Chroma를 사용한 데이터베이스에서 예상한 문서를 찾지 못하고, 결과적으로 예상한 답변이 나오지 않는 상황입니다. 이 문제는 몇 가지 원인에 의해 발생할 수 있습니다.

문제 요약 및 분석

  1. Data Loading 및 Database 설정:

    • 문서가 제대로 로드되지 않았거나, 데이터베이스에 저장되지 않았을 수 있습니다. 데이터 로딩 과정에서 오류가 발생하지 않았는지 확인이 필요합니다.
  2. 벡터 검색 및 설정:

    • 벡터 검색 시, 예상한 문서를 찾도록 설정이 되어 있지 않을 수 있습니다. similarity_search 함수에서 k 값을 변경해보세요. 이 값은 유사한 문서의 수를 결정합니다.
  3. Embeddings 설정:

    • Embedding 모델 설정이 올바른지 확인하세요. 특정 모델이 학습 데이터와 맞지 않을 경우, 결과가 부정확할 수 있습니다.

해결 방법

  1. 벡터 검색 설정값 조정:

    • similarity_search(query, k=3)에서 k 값을 늘려보면서, 원하는 문서가 검색 결과에 포함되는지 확인합니다.
  2. 데이터베이스 재설정 및 확인:

    • 데이터베이스가 제대로 설정되어 있는지, 그리고 문서가 정확히 저장되어 있는지 확인하세요.
    • Chroma와 LangChain의 연동 과정을 다시 확인하여 올바른 설정인지 검토해보세요.
  3. 환경변수와 임베딩 확인:

    • OpenAI의 Embedding 모델 및 환경변수가 올바르게 설정되어 있는지 .env 파일을 확인해봅니다.

유사 질문 관련 링크

다음 링크를 참고해보시면, 다른 사용자도 유사한 문제를 겪고 해결한 사례를 확인할 수 있습니다. 이 스레드에서는 데이터 전처리 및 벡터 검색 설정 조정을 통해 문제를 해결할 수 있었습니다.

현재 설명드린 해결책이 도움이 되시길 바라며, 문제가 해결되지 않는다면 더 자세한 정보를 제공해 주시면 추가 도움을 드리도록 하겠습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

핑핑님의 프로필 이미지
핑핑

작성한 질문수

질문하기