안녕하십니까 강의 잘 듣고있습니다.! from langchain_ollama import OllamaEmbeddings embeddings = OllamaEmbeddings(model="llama3.2") import os from pinecone import Pinecone from langchain_pinecone import PineconeVectorStore index_name = "tax-table-index" pinecone_api_key = os.environ.get("PINECONE_API_KEY") pc = Pinecone(api_key=pinecone_api_key) database = PineconeVectorStore.from_documents(document_list, embedding=embeddings, index_name=index_name) Embedding 후 PinecondVectorStore 저장 할떄 아래와 같은 예외가 발생합니다. ``` PineconeApiException: (400) Reason: Bad Request HTTP response headers: HTTPHeaderDict({'Date': 'Thu, 17 Apr 2025 02:53:26 GMT', 'Content-Type': 'application/json', 'Content-Length': '118', 'Connection': 'keep-alive', 'x-pinecone-request-latency-ms': '2664', 'x-pinecone-request-id': '9090329298438964680', 'x-envoy-upstream-service-time': '2', 'server': 'envoy'}) HTTP response body: {"code":11,"message":"Error, message length too large: found 4194738 bytes, the limit is: 4194304 bytes","details":[]} Output is truncated. View as a scrollable element or open in a text editor. ``` OllamaEmbeddings(model="llama3.2") 를 사용하고 있는데요. 해당 모델로 임베딩을 하면 Pinecone에서 허용하는 데이터를 초과하는 것 으로 보이는데요 이러한 경우 처리하는 방법이 있을까요? 아니면 모델을 변경해야하는 걸까요?
강의중에 들어가시는 langchain 홈페이지가 지금이랑 version이 다른것 같은데 현재 version 홈페이지에서는 강의 내용에 나오는 곳을 찾을 수가 없습니다. 혹시 version이 달라도 괜찮을까요? 예를 들어 Microsoft Word Document loaders를 찾고 싶습니다.
안녕하세요. 3.2 예제 실습중 아래와 같은 이슈를 해결하지 못하여 질문 드립니다. 사용자 환경운 github 에서 제고해준 code space 환경에서 테스트 중입니다. 오류 코드는.. from langchain_chroma import Chroma # 데이터를 처음 저장할 때 database = Chroma.from_documents(documents=document_list, embedding=embedding, collection_name='chroma-tax', persist_directory="./chroma") 위 코드 실행시 아래와 같은 오류가 발생합니다. AttributeError Traceback (most recent call last) Cell In[108], line 4 1 from langchain_chroma import Chroma 3 # 데이터를 처음 저장할 때 ----> 4 database = Chroma.from_documents(documents=document_list, embedding=embedding, collection_name= 'chroma-tax' , persist_directory= "./chroma" ) 6 # 이미 저장된 데이터를 사용할 때 7 #database = Chroma(collection_name='chroma-tax', persist_directory="./chroma", embedding_function=embedding) File /workspaces/faith79/.venv/lib/python3.12/site-packages/langchain_chroma/vectorstores.py:1239 , in Chroma.from_documents (cls, documents, embedding, ids, collection_name, persist_directory, client_settings, client, collection_metadata, kwargs) 1237 if ids is None: 1238 ids = [ doc.id if doc.id else str(uuid.uuid4()) for doc in documents] -> 1239 return cls.from_texts( 1240 texts=texts, 1241 embedding=embedding, 1242 metadatas=metadatas, 1243 ids=ids, 1244 collection_name=collection_name, 1245 persist_directory=persist_directory, 1246 client_settings=client_settings, 1247 client=client, 1248 collection_metadata=collection_metadata, 1249 kwargs, 1250 ) ... --> 327 client settings = chromadb.config.Settings(is_persistent=True) 328 client settings.persist_directory = persist_directory 329 else: AttributeError : module 'chromadb' has no attribute 'config' Output is truncated. View as a scrollable element or open in a text editor. Adjust cell output settings... //////////////////////////////////////////////////////////////////////////////// chromadb 에서 config 속성 사용이 안된다는거 같아요. 그래서 langchain_chroma의 버전도 변경하고 chromadb 도 설치 후 버전도 이것저것 변경해 보았는데, 동일한 이슈만 지속적으로 나오고 있습니다 꼭 해결하고 싶어요~ 도와주세요.
3.4 벡터 데이터베이스로 pinecone 설정하는 강의를 듣고 있는데 최종 답변이 아래와 같이 나왔습니다. 처음에는 답변이 잘 나오다가 어느 순간부터 관련 정보가 없다고 나오는데 혹시 그 이유에 대해 알 수 있을까요? {'query': '연봉 5천만원인 거주자의 종합소득세는?', 'result': '죄송합니다. 제공된 문서에 구체적인 소득세율이나 계산 방법에 대한 정보가 없어서, 연봉 5천만원인 거주자의 종합소득세를 정확하게 계산할 수 없습니다.'}
안녕하세요 윈도우환경에서 pip install langchain-chroma 시 아래와 같은 오류가 발생하였습니다 chatGpt에 물어보니 Visual Studio Build Tools 2022 - "C++를 사용한 데스크탑 개발" 을 설치하면 된다고 해서 설치했는데도 같은 오류가 발생합니다 혹시 원인을 해결법을 있을까요?? (new_env) PS D:\00-git\LLMS\rag> pip install langchain-chroma Collecting langchain-chroma Using cached langchain_chroma-0.2.2-py3-none-any.whl.metadata (1.3 kB) Collecting langchain-core!=0.3.0,!=0.3.1,!=0.3.10,!=0.3.11,!=0.3.12,!=0.3.13,!=0.3.14,!=0.3.2,!=0.3.3,!=0.3.4,!=0.3.5,!=0.3.6,!=0.3.7,!=0.3.8,!=0.3.9,<0.4.0,>=0.2.43 (from langchain-chroma) Using cached langchain_core-0.3.45-py3-none-any.whl.metadata (5.9 kB) Collecting numpy<2.0.0,>=1.26.2 (from langchain-chroma) Using cached numpy-1.26.4.tar.gz (15.8 MB) Installing build dependencies ... done Getting requirements to build wheel ... done Installing backend dependencies ... done Preparing metadata (pyproject.toml) ... error error: subprocess-exited-with-error × Preparing metadata (pyproject.toml) did not run successfully. │ exit code: 1 ╰─> [12 lines of output] + D:\00-git\LLMS\rag\new_env\Scripts\python.exe C:\Users\son\AppData\Local\Temp\pip-install-w42pka3_\numpy_b7703e22acb64ae9bde7b4f773c9579f\vendored-meson\meson\ meson.py setup C:\Users\son\AppData\Local\Temp\pip-install-w42pka3_\numpy_b7703e22acb64ae9bde7b4f773c9579f C:\Users\son\AppData\Local\Temp\pip-install-w42pka3_\numpy_b7703e22acb64ae9bde7b4f773c9579f\.mesonpy-js85t3mm -Dbuildtype=release -Db_ndebug=if-release -Db_vscrt=md --native-file=C:\Users\son\AppData\Local\Temp\pip-install-w42pka3_\numpy_b7703e22acb64ae9bde7b4f773c9579f\.mesonpy-js85t3mm\meson-python-native-file.ini The Meson build system Version: 1.2.99 Source dir: C:\Users\son\AppData\Local\Temp\pip-install-w42pka3_\numpy_b7703e22acb64ae9bde7b4f773c9579f Build dir: C:\Users\son\AppData\Local\Temp\pip-install-w42pka3_\numpy_b7703e22acb64ae9bde7b4f773c9579f\.mesonpy-js85t3mm Build type: native build Project name: NumPy Project version: 1.26.4 ..\meson.build:1:0: ERROR: Compiler cl cannot compile programs. A full log can be found at C:\Users\son\AppData\Local\Temp\pip-install-w42pka3_\numpy_b7703e22acb64ae9bde7b4f773c9579f\.mesonpy-js85t3mm\meson-logs\meson-log.txt [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. [notice] A new release of pip is available: 24.3.1 -> 25.0.1 [notice] To update, run: python.exe -m pip install --upgrade pip error: metadata-generation-failed × Encountered error while generating package metadata. ╰─> See above for output. note: This is an issue with the package mentioned above, not pip. hint: See above for details. (new_env) PS D:\00-git\LLMS\rag>
query = '연봉 5천만원인 직장인의 소득세는 얼마인가요?'의 쿼리는 다음과 같이 답변합니다. 제공된 문맥에는 연봉 5천만 원인 직장인의 소득세가 구체적으로 정의되어 있지 않습니다. 근로소득에 대한 기본세율이 적용된다고 언급되어 있지만, 기본세율의 구체적인 수치는 제공되지 않았습니다. 따라서 필요한 정보가 부족하여 소득세의 정확한 금액을 계산할 수 없습니다. query = '연봉 5천만원의 소득세를 구체적으로 계산하고, 세율 및 공제 내용을 포함해 설명해 주세요.'의 쿼리에서 연봉이 5천만 원일 경우, 소득세를 계산하기 위해서는 종합소득 과세표준에 적용되는 세율을 사용해야 합니다. 1,400만 원 초과 5,000만 원 이하 구간에 해당하므로 세율은 84만 원 + (1,400만 원을 초과하는 금액의 15%)입니다. 따라서 소득세는 84만 원 + (3,600만 원 * 0.15) = 624만 원이 됩니다. 쿼리 내용에 따라 다르게 답변하는데, 왜 그런건지 알수 있나요? 코드 첨부합니다. # 질문 설정 #query = '연봉 5천만원인 직장인의 소득세는 얼마인가요?' query = '연봉 5천만원의 소득세를 구체적으로 계산하고, 세율 및 공제 내용을 포함해 설명해 주세요.' import pprint # LLM 설정 from langchain_openai import ChatOpenAI llm = ChatOpenAI(model='gpt-4o') from langchain import hub from langchain.chains import RetrievalQA prompt = hub.pull("rlm/rag-prompt") retriever = database.as _retriever() #pprint.pprint(retriever.invoke(query)) qa_chain = RetrievalQA.from_chain_type( llm, retriever= database.as _retriever(), chain_type_kwargs={"prompt": prompt} ) import pprint #pprint.pprint(retriever.invoke(query)) # LLM 실행 ai_message = qa_chain.invoke(query) # 딕셔너리 형태의 응답에서 "answer" 또는 "result" 키 값만 출력 if isinstance(ai_message, dict): answer = ai_message.get("answer") or ai_message.get("result") or "응답 없음" print(answer) else: print(ai_message)
import os # 기존 환경 변수 확인 print("OPENAI_API_KEY:", os.getenv("OPENAI_API_KEY")) print("UPSTAGE_API_KEY:", os.getenv("UPSTAGE_API_KEY")) # OpenAI API 키 삭제 (Upstage API만 사용하도록 설정) if "OPENAI_API_KEY" in os.environ: del os.environ["OPENAI_API_KEY"] # Upstage API 키 직접 설정 os.environ["UPSTAGE_API_KEY"] = "up_kh9mX7uA129qfCuzmcf6COX4HUabn" 처음에 OpenAI API 키랑 Upstage API 키 간의 충돌이 일어났구나 싶어, 위와 같이 코드를 작성한 후에 다시 크로마 DB에 임베딩을 시켜보는 데도 계속 똑같습니다 ㅠㅠ 심지어 API 키를 계속 새로 발급받아도 이래요 ㅠㅠ 어디가 문제일까요...?
안녕하세요 dictionary chain을 구성할때 궁금한 점이 있습니다. dictionary = ["사람을 나타내는 표현 -> 거주자"] 으로 수업중에 진행한 것을 봤습니다! 다만 다양한 단어 사전이 필요할 수 있을 것 같은데 구조를 어떻게 하면 좋을지 고민되어 여쭤봅니다. 1. 리스트 형태 dictionary = [ "사람 -> 거주자", "학생 -> 학습자", "교수 -> 강사", "회사원 -> 직장인" ] 2. 완전 비정형 텍스트 dictionary = """ 사람 -> 거주자, 학생 -> 학습자, 교수 -> 강사, 회사원 -> 직장인 """ 혹시 이럴때도 팁같은게 좀 있을까요??
3.4강을 보고 따라하고있습니다. 현재 test.ipynb에서 진행중이고 .env는 api key가 입력되어있습니다. 먼저 첫 셀을 실행하고 두 번째 셀로 연결을 하려는데 잘 되지 않네요. ㅠ 오류메세지는 다음과 같습니다. 파인콘 API키도 재발급 받아봤고 pc = Pinecone(api_key="pinecone_api_key") 이런식으로 직접 문자열로도 해봤는데 안되네요 ㅠㅠ 왜이런걸까요? 일단 API 키 인식을 못하길래 직접 이렇게 넣었는데도 안되네요; ㅠ 왜이런걸까요? 혹시 해결에 도움될 만한 추가 필요 자료가 있다면 이야기하시면 더 드리도록하겠습니다. ( 환경 pip 라던가.. ) 아래 공식 사이트에 가서 https://python.langchain.com/docs/integrations/vectorstores/pinecone/ 직접적인 환경변수를 넣으면 잘됩니다. 어째서일까요? 해결 : 커널을 재시작하니 잘됩니다. 모두들 기본에 충실하시길;;
3.2.1 LangChain과 Chroma를 활용한 RAG 구성 + Upstage Embeddings.ipynb 파일을 .py로 변환하여 실행시켰는데, 결과가 제대로 나오지 않습니다. 한번인가 정확하게 나왔던것 같습니다. 무슨 문제 인지 궁금합니다. -------------------------------- %runfile /home/sjhappy/downloads/source_code/LLM/inflearn-lim-application/3_2_ 2.py --wdir /home/sjhappy/anaconda3/envs/LLM_EN/lib/python3.9/site-packages/langsmith/client.py:253: LangSmithMissingAPIKeyWarning: API key must be provided when using hosted LangSmith API warnings.warn( {'query': '연봉 3천만원인 직장인의 소득세는 얼마인가요?', 'result': '질문에서 제공된 정보로는 정확한 소득세를 계산할 수 없습니다. 소득세는 근로소득 외에 다른 소득, 세액공제 및 감면액 등에 따라 달라질 수 있습니다. 따라서, 더 자세한 정보를 제공해주시면 소득세를 계산해드릴 수 있습니다.'} ------------------ # coding: utf-8 # # 1. 패키지 설치 # In[1]: # # 2. Knowledge Base 구성을 위한 데이터 생성 # # - [RecursiveCharacterTextSplitter]( https://python.langchain.com/v0.2/docs/how_to/recursive_text_splitter/)를 활용한 데이터 chunking # - split 된 데이터 chunk를 Large Language Model(LLM)에게 전달하면 토큰 절약 가능 # - 비용 감소와 답변 생성시간 감소의 효과 # - LangChain에서 다양한 [TextSplitter]( https://python.langchain.com/v0.2/docs/how_to/#text-splitters)들을 제공 # - chunk_size 는 split 된 chunk의 최대 크기 # - chunk_overlap 은 앞 뒤로 나뉘어진 chunk들이 얼마나 겹쳐도 되는지 지정 # In[1]: 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) # In[2]: from dotenv import load_dotenv from langchain_upstage import UpstageEmbeddings # 환경변수를 불러옴 load_dotenv() # OpenAI에서 제공하는 Embedding Model을 활용해서 chunk 를 vector화 embedding = UpstageEmbeddings(model="solar-embedding-1-large") # In[7]: 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) # # 3. 답변 생성을 위한 Retrieval # # - Chroma 에 저장한 데이터를 유사도 검색( similarity_search() )를 활용해서 가져옴 # In[8]: query = '연봉 3천만원인 직장인의 소득세는 얼마인가요?' # k 값을 조절해서 얼마나 많은 데이터를 불러올지 결정 retrieved_docs = database.similarity_search(query, k=4) # In[9]: retrieved_docs # # 4. Augmentation을 위한 Prompt 활용 # # - Retrieval된 데이터는 LangChain에서 제공하는 프롬프트( "rlm/rag-prompt" ) 사용 # In[10]: from langchain_upstage import ChatUpstage llm = ChatUpstage() # In[11]: from langchain import hub prompt = hub.pull("rlm/rag-prompt") # # 5. 답변 생성 # # - [RetrievalQA]( https://docs.smith.langchain.com/old/cookbook/hub-examples/retrieval-qa-chain)를 통해 LLM에 전달 # - RetrievalQA 는 [create_retrieval_chain]( https://python.langchain.com/v0.2/docs/how_to/qa_sources/#using-create_retrieval_chain)으로 대체됨 # - 실제 ChatBot 구현 시 create_retrieval_chain 으로 변경하는 과정을 볼 수 있음 # In[12]: from langchain.chains import RetrievalQA qa_chain = RetrievalQA.from_chain_type( llm, retriever= database.as _retriever(), chain_type_kwargs={"prompt": prompt} ) # In[13]: ai_message = qa_chain({"query": query}) # In[14]: # 강의에서는 위처럼 진행하지만 업데이트된 LangChain 문법은 .invoke() 활용을 권장 ai_message = qa_chain.invoke({"query": query}) # In[15]: print(ai_message) # In[ ]:
안녕하세요 강사님. 🙂 질문 내용 3.3 강의를 듣던 중 chatGPT 말고 upstage로 구성하는 방법은 없을까? 하고 스스로 방법을 찾아봤습니다. https://github.com/openai/tiktoken/blob/main/tiktoken/model.py 현재 tiktoken에서 제공되는 model 중 upstage의 solar 모델이 없는 것 같습니다. upstage 로 RAG를 구성하는 방법도 배울 수 있을까요..?
안녕하세요. 지금 Chroma.from_documents(documents=document_list, embedding=embedding) 이 부분에서 에러가 나서 질문 드립니다. 개발 환경은 vscode에서 jupyter notebook 가상환경 만들어서 사용 중입니다. 사내에서 공부 중이라 drm으로 인해 txt 파일로 변경을 했고, ollama를 사용해서 embedding model을 생성했습니다. mxbai-embed-large 이 모델을 사용했고요. 일단 소요 시간이 너무 오래 걸립니다. 그리고 1시간이 넘어가고는 canceled future for execute_request message before replies were done 이 에러가 뜨더라고요. 그래서 python으로 작성을 했더니 2시간 정도 걸리니까 생성은 되더라고요. 이건 좀 아닌 거 같아서 질문 드립니다. 혹시 왜 이런지 아실까요?
안녕하세요 강사님 🙂 저는, 이번 강의를 통해 ipynb로 처음 실습을 해봅니다. 실습 중 처음부터 막히는 부분이 발생해서 질문을 남깁니다. 실습환경 Mac OS Python 3.13 pyenv virtualenv 작성한 코드 %pip install langchain-upstage python-dotenv 발생한 오류 Collecting langchain-upstage Using cached langchain_upstage-0.6.0-py3-none-any.whl.metadata (3.3 kB) Requirement already satisfied: python-dotenv in /Users/dot/.pyenv/versions/3.10/envs/inflearn-llm-application/lib/python3.13/site-packages (1.0.1) Requirement already satisfied: langchain-core<0.4.0,>=0.3.29 in /Users/dot/.pyenv/versions/3.10/envs/inflearn-llm-application/lib/python3.13/site-packages (from langchain-upstage) (0.3.34) Requirement already satisfied: langchain-openai<0.4,>=0.3 in /Users/dot/.pyenv/versions/3.10/envs/inflearn-llm-application/lib/python3.13/site-packages (from langchain-upstage) (0.3.4) Collecting pypdf<5.0.0,>=4.2.0 (from langchain-upstage) Using cached pypdf-4.3.1-py3-none-any.whl.metadata (7.4 kB) Requirement already satisfied: requests<3.0.0,>=2.31.0 in /Users/dot/.pyenv/versions/3.10/envs/inflearn-llm-application/lib/python3.13/site-packages (from langchain-upstage) (2.32.3) Collecting tokenizers<0.20.0,>=0.19.1 (from langchain-upstage) Using cached tokenizers-0.19.1.tar.gz (321 kB) Installing build dependencies ... Getting requirements to build wheel ... Preparing metadata (pyproject.toml) ... error: subprocess-exited-with-error × Preparing metadata (pyproject.toml) did not run successfully. │ exit code: 1 ╰─> [6 lines of output] Checking for Rust toolchain.... Cargo, the Rust package manager, is not installed or is not on PATH. This package requires Rust and Cargo to compile extensions. Install it through the system's package manager or via https://rustup.rs/ [end of output] ... note: This is an issue with the package mentioned above, not pip. hint: See above for details. Note: you may need to restart the kernel to use updated packages. Output is truncated. View as a scrollable element or open in a text editor. Adjust cell output settings... 문제 해결 제가 영어를 못해서 claude한테 질문해보니까, Rust와 Cargo가 설치되어 있지 않다고 하더군요. curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source "$HOME/.cargo/env" 해당 명령어로 rust를 설치 한 뒤, 수행하면 될거라고 하는데... 너무 번거로워서 다른 방법으로 빌드된 버전을 미리 설치하도록 수행했습니다. %pip install --only-binary :all: langchain-upstage python-dotenv 궁금한 점 langchain-openai를 설치할 때는 문제가 없던데, 왜 langchain-upstage는 이런 문제가 발생하나요..?
현재 개인정보 배우미 챗봇을 다 만들고 테스트 중에 있습니다. 문서는 총 78개를 넣었고, 문서에서 관련 내용을 잘 찾아서 응답하고 있는데, 실제 문서와 응답을 대조해서 1차로 사람이 확인하는 방법 이외에 langsmith와 같이 성능을 측정하기 위한 플랫폼이 있는지 궁금 합니다. langsmith의 경우 챗봇 속도를 확인하고 각 항목당 어떻게 처리하는지 확인이 가능하나, 질문에 대한 정확도나 유사도를 보기 쉽게 확인하기는 조금 부족한것 같더라구요.. huggingface의 evaluate를 써봤으나, 단어, 구문 구조가 다르면 0점으로 평가될 가능성이 높아 적합하지 않아보입니다.. 혹 추천해주실 만한 플랫폼이 있으실까요?
다른 분도 마찬가지로 질문 남겨주셨는데 hub,pull 시에 에러가 발생합니다. 정책이 바뀐 것 같다는 답변을 보고, langSmith 에서 카드를 등록하고 'Developer' Plan 을 선택도 했고, API KEY 도 발급 후 .env 파일에 아래와 같이 설정해도 에러가 발생합니다. LANGCHAIN_TRACING_V2=true LANGCHAIN_API_KEY=<API_KEY> Failed to get info from https://api.smith.langchain.com : LangSmithConnectionError('Connection error caused failure to GET /info in LangSmith API. Please confirm your internet connection. SSLError(MaxRetryError("HTTPSConnectionPool(host=\' api.smith.langchain.com \', port=443): Max retries exceeded with url: /info (Caused by SSLError(SSLCertVerificationError(1, \'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1007)\')))"))\nContent-Length: None\nAPI Key: lsv2_********************************************06') window 환경이고 local 환경에서 구동 중이라 별도 방화벽은 설정이 되어있지 않았는데 해결 방안 공유 부탁드립니다.