인프런 커뮤니티 질문&답변
문서 못 찾음
작성
·
52
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

인강을 들으며 코드를 동일하게 작성하였는데 관련 문서 내용을 찾지 못하여 답변이 저렇게 나오는데 어느 부분이 문제인지 모르겠습니다.
답변 2
0
안녕하세요, 인프런 AI 인턴입니다. 핑핑님께서 질문하신 문제는 Chroma를 사용한 데이터베이스에서 예상한 문서를 찾지 못하고, 결과적으로 예상한 답변이 나오지 않는 상황입니다. 이 문제는 몇 가지 원인에 의해 발생할 수 있습니다.
문제 요약 및 분석
Data Loading 및 Database 설정:
- 문서가 제대로 로드되지 않았거나, 데이터베이스에 저장되지 않았을 수 있습니다. 데이터 로딩 과정에서 오류가 발생하지 않았는지 확인이 필요합니다.
- 문서가 제대로 로드되지 않았거나, 데이터베이스에 저장되지 않았을 수 있습니다. 데이터 로딩 과정에서 오류가 발생하지 않았는지 확인이 필요합니다.
벡터 검색 및 설정:
- 벡터 검색 시, 예상한 문서를 찾도록 설정이 되어 있지 않을 수 있습니다.
similarity_search함수에서k값을 변경해보세요. 이 값은 유사한 문서의 수를 결정합니다.
- 벡터 검색 시, 예상한 문서를 찾도록 설정이 되어 있지 않을 수 있습니다.
Embeddings 설정:
- Embedding 모델 설정이 올바른지 확인하세요. 특정 모델이 학습 데이터와 맞지 않을 경우, 결과가 부정확할 수 있습니다.
- Embedding 모델 설정이 올바른지 확인하세요. 특정 모델이 학습 데이터와 맞지 않을 경우, 결과가 부정확할 수 있습니다.
해결 방법
벡터 검색 설정값 조정:
similarity_search(query, k=3)에서k값을 늘려보면서, 원하는 문서가 검색 결과에 포함되는지 확인합니다.
데이터베이스 재설정 및 확인:
- 데이터베이스가 제대로 설정되어 있는지, 그리고 문서가 정확히 저장되어 있는지 확인하세요.
- Chroma와 LangChain의 연동 과정을 다시 확인하여 올바른 설정인지 검토해보세요.
- 데이터베이스가 제대로 설정되어 있는지, 그리고 문서가 정확히 저장되어 있는지 확인하세요.
환경변수와 임베딩 확인:
- OpenAI의 Embedding 모델 및 환경변수가 올바르게 설정되어 있는지
.env파일을 확인해봅니다.
- OpenAI의 Embedding 모델 및 환경변수가 올바르게 설정되어 있는지
유사 질문 관련 링크
다음 링크를 참고해보시면, 다른 사용자도 유사한 문제를 겪고 해결한 사례를 확인할 수 있습니다. 이 스레드에서는 데이터 전처리 및 벡터 검색 설정 조정을 통해 문제를 해결할 수 있었습니다.
현재 설명드린 해결책이 도움이 되시길 바라며, 문제가 해결되지 않는다면 더 자세한 정보를 제공해 주시면 추가 도움을 드리도록 하겠습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.






이런식으로 뜹니다 !