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