Inflearn brand logo image

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

REN님의 프로필 이미지
REN

작성한 질문수

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

DB별로 LLM 답변이 다른 이유가 궁금합니다.

작성

·

83

0

파인콘 사용시에 2MB 초과하는 문제 있잖아요. 그래서 다른 답변들 보고 사이즈 조정해서

image.pngimage.png

사이즈만 맞춰서 했더니 저장은 문제 없이 됬는데
저희 수업 내용상 질문이 '연봉 5천만원인 직장인의 소득세는 얼마인가요?' 라는건데

기존 크로마 이용시에는

{'query': '연봉 5천만원인 직장인의 소득세는 얼마인가요?', 'result': '연봉 5천만원인 직장인의 소득세는 "근로소득에 대해서는 기본세율"이 적용된다고 명시되어 있습니다. 기본세율에 의한 과세는 종합소득세 과세표준에 따라 결정되며, 구체적인 세금 금액은 소득 공제 등이 고려되어야 하므로 단순 계산으로 제시할 수 없습니다. 따라서, 구체적인 세금을 산정하기 위해서는 소득세율표와 개인 소득 공제를 참고해야 합니다.'}

파인콘 사용시에는
{'query': '연봉 5천만원인 직장인의 소득세는 얼마인가요?', 'result': '연봉 5천만원인 직장인의 소득세는 84만원과 1,400만원을 초과하는 금액의 15퍼센트를 더한 것입니다. 이를 계산하면, 소득세는 약 474만원입니다.'}

같은 문서를 가지고 DB만 달리 하는건데 이렇게 답변이 상이하게 나오면 문서가 제대로 벡터DB에 저장이 안됬다고 생각할수 있는건가요? 원인이 궁금합니다.

그리고 수업 영상 랭체인 홈페이지에서 나오는 코드랑 실제로 들어가서 버전 맞추어도 예제 코드가 달라서 좀 어려움이 있습니다. 10분짜리 영상을 30분 넘게 보게 됩니다. 그나마 깃허브 코드가 비슷해서 그걸로 사용하고 있습니다.

답변 2

0

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

안녕하세요, 좋은 질문 감사합니다. 파인콘(Pinecone)과 크로마(Chroma) 모두 벡터 기반 검색(semantic search)이기 때문에, 동일한 문서를 인덱싱했더라도 “같은 쿼리”에 대해 “완전히 같은 답변”을 기대하기 어렵습니다.

말씀하신 것처럼 사이즈를 조절하셨으면 크로마에 저장된 청크들과 파인콘에 저장된 청크들이 달라서 생성된 답변에 차이가 있을 것 같습니다. 해당 질문에 대해 어떤 내용을 가져오는지 궁금하시면 retriever.invoke()등의 method를 활용해서 확인하실 수 있습니다.

그리고 마지막은 이 부분은 어떤 어려움이신지 조금 더 알려주실 수 있을까요?

그리고 수업 영상 랭체인 홈페이지에서 나오는 코드랑 실제로 들어가서 버전 맞추어도 예제 코드가 달라서 좀 어려움이 있습니다

업데이트가 필요한 경우라면 제가 영상을 다시 촬영해서 업데이트해서 공유를 드려야 할 것 같습니다. 조금 더 자세히 말씀해주시면 피드백을 반영해서 개선해보겠습니다. 감사합니다.

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

마지막에 말씀드린 그 부분은
13. 3.4 LangChain을 활용한 Vector Database 변경 (Chroma Pinecone)

이 강의를 예로 들면 강의 처음 화면에 이런 화면이 나오는데요

image.png

직접 랭체인에 들어가면
https://python.langchain.com/v0.2/docs/integrations/vectorstores/pinecone/

화면에서 나오는 코드와 실제 들어가는 코드가 달라서 어려움이 있다는 것이었습니다.

원래 입문자들이 강의 들으면서 강의 내용과 실제 내용이 같아야 좀 덜 헷갈리고 빨리 진행이 되잖아요? 그런 의미에서 말씀 드린 부분입니다.

이게 버전도 새로 나오고 하면서 왼쪽 목록 구성이며, 코드 내용이 바뀌는거 같고 바뀔때 마다 강의를 새로 촬영 하실 수도 없는 일이고.. 파인콘도 강의 올리실 때와 달리 지금은 2MB 용량에 걸리는 문제가 발생하는것 처럼요. 그래서 깃허브에 올려주신 코드가 영상 수업내용과 비슷하여 그거 참고 해서 하고 있습니다.

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

아 네네 확인 감사합니다. 작년에 촬영한 영상이다보니 그럴 수 있겠네요. 제공해주신 링크를 확인해봤는데, 해당 링크도 0.2버전이라 구버전입니다. 0.3버전의 코드를 확인 하셔야해서, 파인콘 링크를 전달드립니다

https://python.langchain.com/docs/integrations/vectorstores/pinecone/

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

넵! 디폴트가 0.3v인데 코드가 강의 내용과 달라서 혹시 버전이 달라서 그런건가? 하고 버전을 0.2v로 바꿔서 들어가서 그렇습니다. 그렇게 해도 코드는 달라서 설치하는 부분은 직접 강의대로 코드 입력하고 나머지는 깃허브 참고해서 하고 있습니다.

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

아~ 네네 감사합니다. 해보시다가 다른 회차 진행하시면서 너무 달라서 어려우시면 꼭 말씀해주세요!

0

안녕하세요, 인프런 AI 인턴입니다. REN님.

주신 질문에 대한 답변을 드리겠습니다. 동일한 문서를 벡터 DB에 저장했지만 Chroma와 Pinecone의 결과가 다른 이유는 주로 벡터 검색의 특성에서 비롯됩니다. 주요 원인은 다음과 같습니다.

1. 인덱싱 차이

  • 벡터 데이터 인덱싱 방식: Chroma와 Pinecone은 서로 다른 방식으로 벡터를 인덱싱할 수 있습니다. 이로 인해 질의에 대한 검색 결과가 달라질 수 있습니다.
  • 임베딩 생성 및 처리: 사용한 임베딩 모델과 관련된 차이라면 동일한 텍스트도 각 데이터베이스에서 다르게 벡터화될 수 있습니다.

2. 매개변수 설정

  • k 값 등 검색 파라미터: 검색시 참조하는 문서의 수나 유사도 임계값 등의 설정이 각기 다르게 되어 있을 수 있습니다. 이는 결과 차이에 영향을 미칩니다.
  • 색인 설정 및 최적화: 두 DB 모두 초기 설정값에 따라 검색 효율성과 정확성이 달라질 수 있습니다. 각 DB마다 최적의 설정을 유지하는 것이 중요합니다.

3. 데이터 전처리 & 포멧팅

  • 문서의 전처리 방법: 문서가 DB에 저장될 때 어떤 방식으로 분리되고, 포맷이 어떤 방식으로 작성되었느냐에 따라 검색 결과가 달라질 수 있습니다.

이러한 차이를 줄이기 위해서는 두 벡터DB의 설정값을 가능한 동일하게 맞추어 사용하거나, 문서 데이터를 동일한 방식으로 관리하는 것이 중요합니다.

강의 내용이 사이트와 다르게 느껴지는 문제가 있는 경우, 강의 내의 추가 자료나 GitHub의 리소스를 적극 활용하시길 권장합니다.

제가 추천드리는 연관 질문과 해결책에 대한 링크를 통해 더 많은 정보를 얻으실 수 있습니다. 이 질문에서는 다양한 벡터 데이터베이스의 활용과 결과 차이를 줄이는 방법에 대한 정보를 얻으실 수 있습니다.

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

REN님의 프로필 이미지
REN

작성한 질문수

질문하기