파인콘 사용시에 2MB 초과하는 문제 있잖아요. 그래서 다른 답변들 보고 사이즈 조정해서 사이즈만 맞춰서 했더니 저장은 문제 없이 됬는데 저희 수업 내용상 질문이 '연봉 5천만원인 직장인의 소득세는 얼마인가요?' 라는건데 기존 크로마 이용시에는 {'query': '연봉 5천만원인 직장인의 소득세는 얼마인가요?', 'result': '연봉 5천만원인 직장인의 소득세는 "근로소득에 대해서는 기본세율"이 적용된다고 명시되어 있습니다. 기본세율에 의한 과세는 종합소득세 과세표준에 따라 결정되며, 구체적인 세금 금액은 소득 공제 등이 고려되어야 하므로 단순 계산으로 제시할 수 없습니다. 따라서, 구체적인 세금을 산정하기 위해서는 소득세율표와 개인 소득 공제를 참고해야 합니다.'} 파인콘 사용시에는 {'query': '연봉 5천만원인 직장인의 소득세는 얼마인가요?', 'result': '연봉 5천만원인 직장인의 소득세는 84만원과 1,400만원을 초과하는 금액의 15퍼센트를 더한 것입니다. 이를 계산하면, 소득세는 약 474만원입니다.'} 같은 문서를 가지고 DB만 달리 하는건데 이렇게 답변이 상이하게 나오면 문서가 제대로 벡터DB에 저장이 안됬다고 생각할수 있는건가요? 원인이 궁금합니다. 그리고 수업 영상 랭체인 홈페이지에서 나오는 코드랑 실제로 들어가서 버전 맞추어도 예제 코드가 달라서 좀 어려움이 있습니다. 10분짜리 영상을 30분 넘게 보게 됩니다. 그나마 깃허브 코드가 비슷해서 그걸로 사용하고 있습니다.
여러 벡터 데이터베이스가 나왔는데 혹시 Elasticsearch 를 docker로 설치하고 사용하는 경우도 있는지 궁금합니다. Elasticsearch 도 벡터 데이터베이스를 지원한다는 글을 읽은바가 있고, 검색엔진 분야에서는 Open 소스로 많이 활동되다는 점에서 활용성이 좋아보여서 질문 드립니다.
안녕하세요, gemini를 이용해서 챗봇 생성중에 있습니다. 그런데 하기와 같이 챗봇을 llm과 연동하는 중에 에러가 계속 발생합니다. gpt한테 계속 물어가면서 에러잡고있는데 계속 동일한 에러만 나오네요. ㅠ 어떻게 개선할 수 있을까요? 조언부탁드립니다. 감사합니다. 코드) import streamlit as st from langchain import hub from dotenv import load_dotenv from langchain_google_genai import GoogleGenerativeAIEmbeddings from langchain_pinecone import PineconeVectorStore from langchain_google_genai import ChatGoogleGenerativeAI from langchain.chains import RetrievalQA from langchain.prompts import ChatPromptTemplate st.set_page_config(page_title="영향분석 챗봇", page_icon="★") st.title("영향분석 챗봇") st.caption("System 변경 영향 분석") load_dotenv() # 세션 상태에 메시지 리스트가 없으면 초기화 if 'message_list' not in st.session_state: st.session_state.message_list = [] # 이전 메시지 출력 for message in st.session_state.message_list: with st.chat_message(message["role"]): st.write(message["content"]) def get_ai_message(user_message): try: # 입력 메시지 확인 if not isinstance(user_message, str) or not user_message.strip(): return "질문이 비어 있습니다. 유효한 질문을 입력해 주세요." print(f"user_message: {user_message}") # user_message의 내용 출력 print(f"user_message length: {len(user_message)}") # 문자열 길이 출력 print(f"user_message type: {type(user_message)}") # 타입 출력 # Google Generative AI Embeddings 모델 초기화 embedding = GoogleGenerativeAIEmbeddings(model='models/gemini-embedding-exp-03-07') index_name = 'uml-index' database = PineconeVectorStore.from_existing_index(index_name=index_name, embedding=embedding) llm = ChatGoogleGenerativeAI(model="gemini-2.0-flash") prompt_template = hub.pull("rlm/rag-prompt") retriever = database.as_retriever(search_kwargs={'k': 4}) # RetrievalQA 인스턴스 생성 qa_chain = RetrievalQA.from_chain_type(llm, retriever=retriever, chain_type_kwargs={"prompt": prompt_template}) dictionary = ["External Entity -> actor"] prompt = ChatPromptTemplate.from_template(f""" 사용자의 질문을 보고, 우리의 사전을 참고해서 사용자의 질문을 변경해주세요. 만약 변경할 필요가 없다고 판단된다면, 사용자의 질문을 변경하지 않아도 됩니다. 그런 경우에는 질문만 리턴해주세요. 사전 : {dictionary} 질문 : {{question}} """) dictionary_chain = prompt | llm uml_chain = {"query": dictionary_chain} | qa_chain ai_message = uml_chain.invoke({"question": user_message}) return ai_message except Exception as e: print(f"오류 발생: {repr(e)}") # 오류 메시지 출력 print(f"입력된 user_message: {user_message}") # 오류 발생 시 입력된 메시지 출력 return f"오류가 발생했습니다: {repr(e)}" # 사용자 입력 처리 if user_question := st.chat_input(placeholder="CR 내용을 첨부해주세요"): with st.chat_message("user"): st.write(f"사용자 질문: {user_question}") st.session_state.message_list.append({"role": "user", "content": user_question}) ai_message = get_ai_message(user_question) with st.chat_message("AI"): st.write(ai_message) st.session_state.message_list.append({"role": "AI", "content": ai_message}) 에러) user_message: 시스템에 연결된 External Entity를 알려주세요 user_message length: 31 user_message type: <class 'str'> 오류 발생: GoogleGenerativeAIError('Error embedding content: bad argument type for built-in operation') 입력된 user_message: 시스템에 연결된 External Entity를 알려주세요
13번째 동영상 들으면서 따라하는 중이고 OpenAI API 사용 중인데, 아래 코드만 돌리면, PineconeApiException HTTP response body: {"code":11,"message":"Error, message length too large: found 15431073 bytes, the limit is: 4194304 bytes","details":[]} 이러한 에러가 뜹니다. 이를 해결하기 위해서, chunk_size = 10, chunk_overlap=0 으로 줄였는데도 계속 에러가 떠요. 어떻게 하면 해결할 수 있나요? database = PineconeVectorStore.from_documents( document_list, embedding, index_name=index_name )
안녕하세요 현재 유료 결제나 외부로 API를 연동하는 것이 사내 보안 규정 상 어려운 상황입니다. 강의에 나온 대로 langchain-core 라이브러리를 활용하는 경우 core 내부에 langsmith를 쓰는 import 가 있어 langsmith를 반드시 사용 해야하는 상황입니다. langsmith가 유료로 변경되면 API 키가 필요한 상황이라 현재 사내에서는 사용이 어려울 것 같습니다. 이런 경우 langsmith를 사용하지 않고 유사하게 기능을 구현하는 방법이 있는지 궁금합니다.
Upstage를 사용해도, exceeded 되었다고 에러나서요. 뭔가 최근에 토큰 제한이 줄었나봐요. 아래와 같이 batch를 주어서 반복문으로 요청후 database.add_documents(batch)하는 방식으로 해야되네요 ㅠㅠ from langchain_pinecone import PineconeVectorStore # 데이터를 처음 저장할 때 index_name = 'tax-upstage-index' # Split documents into smaller chunks text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=100) chunked_documents = text_splitter.split_documents(document_list) print(f"Chunked documents length: {len(chunked_documents)}") # Initialize the PineconeVectorStore database = PineconeVectorStore.from_documents( documents=[], # Start with an empty list embedding=embedding, index_name=index_name ) # Upload documents in batches batch_size = 100 for i in range(0, len(chunked_documents), batch_size): print(f'index: {i}, batch size: {batch_size}') batch = chunked_documents[i:i + batch_size] database.add_documents(batch) # Add documents to the existing database
안녕하세요, 강의들으면서 도움 많이 받고 있습니다. Pinecone API를 .env에 적었지만 인식을 못해서 하기와 같이 직접적으로 입력해주었습니다. 그런데 하기 부분에서 또 다시 정의가 안 되었다고 에러가 뜹니다. 어디를 수정해야할까요? 커널?을 껐다켰다하면 되는 분도 있다고 해서 따라해봤는데 잘 안 되는 것 같습니다.ㅠ
안녕하세요, 3.2 RAG구성 강의 중 하기 부분에서 막혔습니다. 조언 요청드립니다. OpenAI 대신, Upstage를 쓰고 싶어 하기와 같이 코드 수정을 하였습니다. 그런데 두번째 캡쳐 그림 부터 에러가 발생합니다. Upstage가 유효하지 않다고 하는 것 같은데... 무엇이 잘못된 것 일까요? 그리고 실습을 위해 OpenAI를 결제해야한다면 얼마정도 하면, 완강하는데 문제없을까요?! Error code: 400 - {'error': {'message': 'The requested model is invalid or no longer supported. You can find the list of available models on our models page ( https://console.upstage.ai/docs/models )', 'type': 'invalid_request_error', 'param': '', 'code': 'invalid_request_body'}}
Upstage의 모델을 사용하는데 답변의 정확성이 떨어지는 것 같습니다. 아래 캡처 화면을 보면 retriever가 페이지를 가져오는 것 까지는 괜찮아 보이는데, 가져온 문서의 내용을 적용하여 계산하는 것, 그리고 심지어 기본적인 수학적 계산도 종종 오류를 냅니다 ㅜㅜ 더 정확한 답변을 내도록 할 방법이 있을까요?
최신 버전 LangChain 문서의 <How to add chat history> 부분이 강의 영상이랑 대부분 다른 것 같은데 강의 영상 코드 기준으로 진행해도 문제가 없을까요?( https://python.langchain.com/docs/how_to/qa_chat_history_how_to/#chains )