안녕하세요! 강의 수강과 책을 병행해서 보고 싶은데요, 강의가 예전에 촬영된것 같아서, 책을 참고해서 보는게 훨씬 수월하고 학습하는데 좋을것 같아서요. 각 강의 회차별로 "혼자서도 척척 해내는 AI 에이전트 만들기" 책에서 어떤 챕터랑 같이 보면 도움이 될지 알 수 있을까요??
안녕하세요, 개인 프로젝트로 rag 기반 챗봇을 구현하고 있습니다. ollama, gemma3:1b를 사용중입니다. txt 파일을 어느정도 전처리를 하고 임베딩을 시키려고 하는데 전처리 중 고민이 있습니다. 구조가 잡혀있는 txt 파일인데, 문서 구조는 대략 아래와 같은 형태입니다. 1.2 화면 설명 1.2.1 개요 - 이 화면은 사용자가 업무를 처리하기 위한 화면입니다. 1.2.2 화면 위치 상단 메뉴 > 업무 관리 > 처리 화면 1.2.3 처리 절차 1) 항목 선택 2) 저장 버튼 클릭 현재 고민되는 부분은 다음과 같습니다. 이런 번호 기반 구조를 그대로 유지한 채로 chunking 하는 것이 좋은지, 아니면 번호는 제거하고 의미 단위로만 분할하는 것이 나은지 - , • , 숫자 목록 같은 불릿/목록 기호를 임베딩 전에 제거하거나 정규화하는 게 좋은지 “개요 / 처리 절차 / 화면 위치” 같은 섹션 제목을 chunk 본문에 포함시키는 것이 검색 품질에 도움이 되는지 감사합니다.
안녕하세요, 좋은 강의 감사합니다 ! 강의 내용과는 별개로, 개인 프로젝트 겸 하나 실험해보고 싶은 주제가 있어 간단히 의견 여쭤보고 싶습니다. 유튜브 라이브 채팅 로그를 분석하기 위해, 각 채팅을 의도 기반으로 7~10개 정도의 라벨로 분류해보려 합니다. (채팅은 약 5만~10만개 정도) 다만 라이브 채팅 특성상 다국어가 섞여 있고, 이모지 사용이 많으며, 문장이 매우 짧은 경우가 대부분이라 과연 잘 될지 고민이 됩니다... 이와 관련해 LLM을 활용해 채팅 데이터를 라벨링하는 방식에 대해 어떻게 생각하시는지 궁금합니다. 실제로 비슷한 케이스를 다뤄보신 경험이 있거나, 주의해야 할 점이 있다면 공유해주시면 감사하겠습니다. 또한 LLM을 활용한 라벨링 관점에서, 7~10개 라벨이 모델이 분류하기 적절한 수준인지 아니면 라벨 수를 줄이는 것이 성능 향상에 도움이 될지도 의견을 듣고 싶습니다. 감사합니다!
안녕하세요, 폐쇄망에 챗봇을 구축하려 합니다. 하지만, GPU가 안 되는 환경입니다. 폐쇄망 환경에서 CPU 위주로 운용한다는 제약까지 고려했을 때, 강의에서 소개된 것처럼 LGAI-EXAONE/EXAONE-3.0-7.8B-Instruct를 생성 모델로 사용하고, intfloat/multilingual-e5-large-instruct를 임베딩 모델로 사용하는 조합이 한국어 중심 RAG 환경에서도 여전히 합리적인 선택이라고 보시는지 궁금합니다.
안녕하세요 선생님 🙂 먼저 양질의 강의를 제공해주셔 정말 감사합니다. cross_encoder_retriever = ContextualCompressionRetriever( base_compressor=re_ranker, base_retriever=multi_query_custom_retriever, ) 위와 같이 re-ranker를 적용시킬때 retriever를 멀티쿼리로 적용을 해보았습니다. 랭스미스로 로깅을 해보니, 멀티 쿼리는 정상적으로 작동한것 같은데요, 각각의 쿼리에 대해 Runnable로 리랭킹을 하는게 아닌, 원본 쿼리를 기반으로 리랭킹을 한다는 느낌을 받았습니다. 아무래도 데이터셋이 테스트용이라 확답이 안서는데, 이 부분은 사용자의 "원본" 쿼리로만 리랭킹을 하는건지 궁금합니다. 만약 그렇다면 랭그래프로 해결을 할 수 있을듯 한데요, State에 멀티 쿼리의 문서 검색 결과를 저장한 뒤, 각 쿼리에 대한 리랭킹 노드를 하는 방법이 생각이 났는데 피드백 부탁드려도 될까요? (사실 오버 엔지니어링이라는 생각이 들지만 ㅎㅎ 실제 프로덕션에 적용시킨다면 어떤 아키텍쳐가 좋은지 궁금합니다!) 감사합니다 :)
선생님 안녕하세요 좋은 강의 감사드립니다. 24강 강의를 들으면서 14:07 부분에 질문이 있습니다. 해당부분을 보시면 prompt에 PR URL을 직접 하드코딩 해주셨는데요. 물론 예시로 빨리 보여주기 위해서 그렇게 하신 것 같은데, 만약 실제로 제가 구동되는 에이전트를 만든다고 했을때, 조금 다르게 만들어져야 할 것 같아서요 예를 들어, PR URL은 하드코딩이 아니라, PR이 올라가면 langgraph 에이전트가 그것을 자동으로 인식해서 PR url을 가져오는 방식으로요. n8n에서는 드래그 앤 드롭으로 이게 가능할것 같은데.. langgraph에서도 이런 기능을 구현할 수 있는 것인가요?
선생님 안녕하세요 좋은 강의 감사합니다. 10강(Brave API를 활용해서 n8n으로 작성하는 뉴스 감정 분석 (n8n -> gspread))를 듣는 과정에서 질문이 생겨서 문의드립니다. 강의 14:23 부분에서 loop over items에서 항목들이 안넘어와서 선생님은 llm이 output을 주도록 하셨는데요, 저는 해보니 되더라고요..? 이러면 굳이 llm output을 안받아와도 되는것이죠?
graphRAG - Neo4J로 구현하는 지식 그래프 기반 RAG 시스템 (feat. LangChain)
만약, 만든 랭체인과 그래프rag를 서비스로 만든다면, neo4j를 호출할 때, pooling은 고려하지 않아도 되는지요? 일반적으로 db 연결에 timeout이나 pooling 등의 설정을 해줘야 하는 것으로 아는데, api를 호출하는 것이라 서버에서 자체적으로 처리하는 것으로 생각하면 될런지요?
소득세법 제55조(세율) 및 제47조(근로소득공제)에 따르면, 거주자 기준으로 연봉 5천만원(근로소득)의 소득세는 다음과 같이 계산됩니다. 근로소득공제 적용 총급여액 5천만원 기준 공제액: 1,475만원 (5천만원 × 15% + 75만원, 단 최고 한도 2천만원 미만) 과세표준 산정 5천만원 - 1,475만원 = 3,525만원 종합소득세율 적용 3,525만원 구간: 1,400만원 이하 6% + 초과분 15% 산출세액: 84만원(1,400만원 × 6%) + (3,525만원 - 1,400만원) × 15% = 474.75만원 최종 납부세액 474.75만원에서 근로소득세액공제 (산출세액의 55% 한도) 등 추가 공제 적용 가능 ※ 정확한 세액은 의료비·교육비·보험료 등 추가 공제항목에 따라 달라질 수 있습니다. (추가 설명: "거주자"는 직장·자영업 등 소득 유형과 무관하게 국적에 관계없이 국내 주소를 둔 개인을 의미하며, 직장인은 그 하위 범주에 포함됩니다.) 답변이 전혀 다르고 이상하게 근거없는 숫자도 나오는데 왜그런걸까유 fewshot하는것까지 작성했습니다.
new_question 이 ''연봉 5천만원인 거주자의 소득세는 얼마인가요?'' 이라는 질문만 내놓고, 답은 내놓지 않습니다 %pip install python-dotenv langchain langchain-upstage langchain-community langchain-text-splitters langchain-pinecone docx2txt 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) from dotenv import load_dotenv from langchain_upstage import UpstageEmbeddings # 환경변수를 불러옴 load_dotenv() # OpenAI에서 제공하는 Embedding Model을 활용해서 `chunk`를 vector화 embedding = UpstageEmbeddings(model="embedding-query") from langchain_pinecone import PineconeVectorStore # 데이터를 처음 저장할 때 index_name = 'tax-upstage-index' database = PineconeVectorStore.from_documents(document_list, embeddin g, index_name=index_name) query = '연봉 5천만원인 직장인의 소득세는 얼마인가요?' # `k` 값을 조절해서 얼마나 많은 데이터를 불러올지 결정 retrieved_docs = database.similarity_search(query, k=3) retrieved_docs from langchain_upstage import ChatUpstage llm = ChatUpstage() from langchain_core.prompts import PromptTemplate prompt_with_template = '아래 질문에 답변해주세요:\n\n {query}' prompt_template = PromptTemplate(template=prompt_with_template, input_variables={"query"}) from langchain_core.output_parsers import StrOutputParser from langchain_core.prompts import ChatPromptTemplate dictionary = ["사람을 나타내는 표현 -> 거주자"] prompt = ChatPromptTemplate.from_template(f""" 사용자의 질문을 보고, 우리의 사전을 참고해서 사용자의 질문을 변경해주세요. 만약 변경할 필요가 없다고 판단된다면, 사용자의 질문을 변경하지 않아도 됩니다. 그런 경우에는 질문만 리턴해주세요 사전: {dictionary} 질문: {{question}} """) dictionary_chain = prompt | llm | StrOutputParser() tax_chain = {"query": dictionary_chain} | prompt_template new_question = dictionary_chain.invoke({"question": query}) new_question RetrievalQA 가 사라져서 PromptTemplate 랑 Pinecorn으로 어떻게든 대체하려고 했는데 엉망이 된거 같습니다. ㅠㅠ 어떻게 하면 답까지 내놓게 할 수 있을까요?