database.as_retriever 의 결과가 다릅니다.
코드가 똑같은데도 불구하고
database.as_retriever 의 결과값이 다를 수 있을까요?
as_retriever 함수에 최소 k=5을 넣어야 제55조 항목이 검색됩니다.
tax_with_markdown.docx 파일은 제공해주신 파일이고
혹시나 싶어서 pinecone index테이블도 삭제했다가 다시 생성해서 바로 찍은 결과입니다.
아래는 제 코드입니다.
from langchain_community.document_loaders import Docx2txtLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=1500, # 각 텍스트 조각의 최대 크기
chunk_overlap=200, # 텍스트 조각 간의 중복 길이
)
# .docx 파일을 로드하고 텍스트를 분할.
loader = Docx2txtLoader('./tax_with_markdown.docx')
document_list = loader.load_and_split(text_splitter=text_splitter)
document_list[52]
from dotenv import load_dotenv
from langchain_openai import OpenAIEmbeddings
# 환경 변수를 로드합니다.
load_dotenv()
# OpenAI 임베딩 모델을 설정합니다.
embedding = OpenAIEmbeddings(model='text-embedding-3-large')
import os
from pinecone import Pinecone
from langchain_pinecone import PineconeVectorStore
# Pinecone 인덱스 이름을 설정합니다.
index_name = 'tax-markdown-index'
# 환경 변수에서 Pinecone API 키를 가져옴
pinecone_api_key = os.environ.get("PINECONE_API_KEY")
# Pinecone을 초기화
pc = Pinecone(api_key=pinecone_api_key)
# from_documents()`를 사용하여 새 인덱스 생성
database = PineconeVectorStore.from_documents(document_list, embedding, index_name=index_name)
query = '연봉 5천만원인 직장인의 소득세는?'
retriever = database.as_retriever(search_kwargs={'k': 5})
retriever.invoke(query)
쿼리를 날린 결과를 찍어보면
5번째에서 제55조가 나옵니다.
아래는 결과값 일부입니다.
[Document(metadata={'source': './tax_with_markdown.docx'}, page_content='나. 그 밖의 배당소득에 대해서는 100분의 14\n\n3.
Document(metadata={'source': './tax_with_markdown.docx'}, page_content='차. 외국정부(외국의 지방자치단체와 연방국가인 외국의 지방정부
Document(metadata={'source': './tax_with_markdown.docx'}, page_content='1. 「공익신탁법」에 따른 공익신탁의 이익\n\n2.
Document(metadata={'source': './tax_with_markdown.docx'}, page_content='저. 대통령령으로 정하는 복리후생적 성질의 급여\n\n4
답변 2
1
공식적으로 일리스 된 자료가 없어서 물증은 없지만 상용화 된 모델의 경우에는 공식적인 문서에서 언급 하지 않으면서 조금씩 업데이트를 하는 것 같습니다. 그래서 temperature를 0으로 설정해도 값이 달라지는 경우가 많습니다. 임베딩 모델도 아마 마찬가지일 거예요. 질문을 올려 주신 시점이 3.5 강인데 3.6 강을 들으시면 지금 겪고 있는 문제들도 모두 해결 될 겁니다. 3.6강을 보시고도 의문점이 있으시면 다시 질문을 달아 주세요!
0
안녕하세요, 인프런 AI 인턴입니다.
한나릴님의 질문에 대해, database.as_retriever의 결과가 다를 수 있는지에 관한 의문입니다. 이 경우에는 저희 강의 내의 질의응답 세션에서 비슷한 문제를 다룬 정보를 찾을 수 있습니다.
강의 내용 중 database.as_retriever 함수에 대한 결과가 예상과 다르게 나타날 수 있는 주된 이유는 벡터 검색(indexing)과 관련된 설정이나 해당 문서 데이터의 특성 때문일 수 있습니다. 특히, 검색에 사용되는 k 값(검색할 문서의 수)에 따라 결과가 크게 달라질 수 있습니다. k 값을 조절하여 원하는 문서가 검색결과에 포함되도록 할 수 있으나, 이는 때때로 원하지 않은 결과를 가져올 수도 있습니다.
간단히 요약하자면, k 값에 따라 database.as_retriever의 결과가 달라질 수 있으며, 이는 벡터 검색의 특성 상 일반적인 현상입니다. 이를 조정하여 원하는 결과를 얻을 수 있지만, 항상 이상적인 결과를 보장하지는 않습니다. 검색 효율성을 높이기 위해 데이터 전처리 등의 추가적인 노력이 필요할 수 있습니다.
자세한 내용은 query 결과 값이 일치하지 않습니다. 질문에서 보실 수 있으며, 다음과 같은 환경에서 k 값을 조절하고 검색의 결과를 관찰하는 방법에 대해 세부적으로 설명하고 있습니다. 특히, 이전 강의에서는 검색 결과에서 원하는 문서를 찾지 못하는 경우, 다양한 방법으로 접근해 해결 방안을 모색하는 과정이 담겨 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
소득세법 docx 파일 공유 요청건
0
65
1
EXAONE 모델 불러오기 안되는 문제
0
89
2
[5.1 강의] LLM Evaluator에 Upstage를 사용하는 방법 + 변경된 Langsmith Docs를 참고하여 구현하는 방법 공유
0
104
2
강의 9에 QA관련된 import가 되지 않네요
0
111
2
🚨 python3.14 를 쓰고 계시면 chroma 에서 ConfigError 가 발생합니다.
1
200
1
강의와 책 관련 질문
0
87
1
문서 전처리 고민
0
111
1
RAG 배포 질문드립니다
0
95
1
강의 내용과는 별개로 궁금한 점이 있습니다
0
89
2
폐쇄망 챗봇 모델
0
94
1
AI agent 쿠폰
0
95
2
저는 왜 그대로 했는데 답변이 틀리게 나오는지 모르겠네요
0
102
2
langchain howto/sequence는 지금 doc 공식 사이트 어디서 확인할 수 있나요?
1
95
1
new_question에 대한 답 출력
0
74
2
랭체인 라이브러리
0
148
2
[LangGraph를 활용한 AI Agent 개발] 쿠폰 유효기간
0
106
1
postgresql의 pgvector 벡터는 어떤가요?
0
345
2
doc관련
0
128
2
load_dotenv() 실행 False
0
96
1
RAG 답변 개선을 위한 정답지 활용 구조 검토 요청
0
119
2
3.2 from langchain.chains ~ 에서 모듈을 찾지 못할 때.
1
406
2
강의 완료 오류
0
89
1
hub.pull 이슈
0
131
2
[3.3 강의] Upstage를 사용한 RAG 구현 성공기 공유
1
150
1





