전체 글 썸네일형 리스트형 증권사 리포트로 만드는 나만의 로컬 AI Agent ⑩ — 테스트와 평가로 프로젝트 마무리하기 지난 9편에서는 질문에 따라 검색과 계산 도구를 선택하는 로컬 AI Agent를 만들었습니다.이번 마지막 편에서는 기능이 실행되는 것을 넘어, 어떤 부분이 정확하게 동작하고 어떤 부분을 더 개선해야 하는지 확인하겠습니다.평가는 네 부분으로 나눕니다.평가 대상확인할 내용평가 방법계산단위 변환과 평균 계산이 맞는가?Python 자동 테스트출처 검사존재하지 않는 출처를 거부하는가?Python 자동 테스트도구 선택질문에 맞는 도구와 증권사를 선택하는가?실제 로컬 모델 평가검색·답변필요한 근거를 찾고 올바르게 설명하는가?원문과 대조하여 검토각 결과를 구분하는 이유가 있습니다.계산 테스트가 통과했다고 답변이 정확한 것은 아닙니다. 출처 번호가 올바르다고 해당 출처가 답변을 뒷받침하는 것도 아닙니다.이번에는 이 차이.. 더보기 증권사 리포트로 만드는 나만의 로컬 AI Agent ⑨ — 질문에 따라 검색과 계산 도구를 선택하는 AI Agent 지난 8편에서는 증권사별 실적 전망을 확인하고, Python으로 평균과 차이를 계산했습니다.지금까지는 사용자가 기능을 직접 선택했습니다.내용을 찾으려면 검색 화면을 사용했습니다.수치를 비교하려면 비교 화면을 사용했습니다.이번에는 질문을 읽은 AI가 필요한 도구를 선택하도록 연결하겠습니다.예를 들어 다음과 같습니다.질문선택할 도구“삼성전자 실적에 환율이 미치는 영향을 설명해 주세요.”리포트 검색“등록한 삼성전자 2026년 3분기 영업이익 전망의 평균과 범위를 비교해 주세요.”확인된 전망치 비교“내일 삼성전자 주가를 예측해 주세요.”지원 범위 안내이번에 만드는 것은 질문마다 도구 하나를 선택해 실행하는 작은 Agent입니다. 여러 도구를 반복 호출하면서 장기 작업을 수행하는 기능은 아직 포함하지 않습니다.1.. 더보기 증권사 리포트로 만드는 나만의 로컬 AI Agent ⑧ — 증권사별 실적 전망을 비교하고 Python으로 계산하기 지난 7편에서는 기업·증권사·발행일로 검색 범위를 좁히고, 벡터 검색과 키워드 검색을 결합했습니다.이번에는 검색한 내용을 이용해 증권사별 실적 전망을 하나의 표로 비교하겠습니다.단순히 “보고서를 요약해 주세요”라고 질문하는 것에서 나아가, 같은 항목의 수치를 모으고 평균과 차이를 계산하는 단계입니다.이번 실습에서는 다음과 같이 역할을 나눕니다.역할담당증권사별 관련 내용 찾기RAG 검색검색된 근거 설명하기로컬 LLM비교 대상과 수치 확인하기사용자단위 변환·평균·차이 계산하기Python비교 표와 차트 보여주기Streamlit이번 버전은 근거를 찾아주는 AI와 사용자의 수치 확인을 결합한 반자동 비교 도구입니다. 수치를 자동 추출하는 기능은 아직 포함하지 않습니다.1. 먼저 비교 기준을 하나로 고정하기이번에 .. 더보기 증권사 리포트로 만드는 나만의 로컬 AI Agent ⑦ — 조건 검색과 Hybrid Search 추가하기 지난 편에서는 브라우저에서 질문하고, 로컬 AI가 생성한 답변과 출처를 확인하는 웹 UI를 만들었습니다.지금까지는 저장된 모든 청크에서 질문과 의미가 가까운 내용을 검색했습니다.이번에는 검색에 두 가지 기능을 추가합니다.메타데이터 필터: 특정 기업·증권사·발행일에 해당하는 보고서만 검색합니다.Hybrid Search: 의미를 비교하는 벡터 검색과 단어를 비교하는 키워드 검색을 결합합니다.완성한 웹 화면에서는 같은 질문에 대해 검색 방식을 바꿔 결과를 비교할 수 있습니다.1. 두 기능은 역할이 다릅니다예를 들어 다음 내용을 찾는다고 가정해 보겠습니다.10월에 발행된 SK증권 보고서에서 HBM 전망을 찾아주세요.여기에는 서로 다른 조건이 섞여 있습니다.질문의 요소처리 방법SK증권증권사 메타데이터 필터10월 .. 더보기 증권사 리포트로 만드는 나만의 로컬 AI Agent ⑥-1 — Streamlit으로 질문하고 답변받는 웹 UI 만들기 지난 6편에서는 검색된 리포트 내용을 Ollama에 전달해 한국어 답변과 출처를 출력했습니다.이제 터미널에서 명령어를 입력하는 대신, 브라우저에서 질문하고 답변을 확인하는 화면을 만들어보겠습니다.이번 편은 검색 고도화에 앞서 웹 UI를 추가하는 연결 편입니다. 이후에는 이 화면에 기업·날짜 필터, 검색 방식 비교, 증권사별 전망 비교 기능을 차례로 붙이겠습니다.1. 이번에 만들 화면화면은 다음과 같이 구성합니다.영역기능질문 입력창리포트에 대해 궁금한 내용 입력검색 개수 설정답변에 전달할 청크 개수 선택답변 생성 버튼검색과 답변 생성 실행답변 영역모델이 작성한 한국어 답변 표시출처 목록답변에 사용한 PDF 파일명과 페이지 표시검색 결과 목록검색된 청크의 출처와 거리 확인캡처 모드답변과 리포트 본문을 숨겨 .. 더보기 증권사 리포트로 만드는 나만의 로컬 AI Agent ⑥ — Ollama로 근거와 출처가 있는 답변 만들기 지난 5편에서는 질문과 관련된 내용을 ChromaDB에서 검색했습니다.“삼성전자 실적에 환율이 미치는 영향은 무엇인가요?”라고 질문하면, 관련 청크의 파일명과 페이지를 확인할 수 있었습니다.이번에는 검색한 내용을 로컬 LLM에 전달해 한국어 답변을 생성합니다.검색 결과를 사람이 직접 읽는 단계에서, AI가 근거를 읽고 설명하는 단계로 넘어가는 것입니다.이번 편은 터미널에서 기본 RAG를 완성하는 과정입니다. 이 기능을 확인한 뒤 웹 UI에 연결하면 브라우저에서 질문하고 답변을 확인할 수 있습니다.1. 이번에 만드는 기능전체 흐름은 다음과 같습니다.사용자 질문 ↓embeddinggemma로 질문 벡터 생성 ↓ChromaDB에서 관련 청크 검색 ↓검색한 내용 + 질문을 Ollama에 전달 .. 더보기 증권사 리포트로 만드는 나만의 로컬 AI Agent ⑤ — 질문과 관련된 보고서 검색하기 Python과 RAG로 시작하는 리포트 검색·전망 비교지난 편에서는 삼성전자 리포트 5개에서 생성한 177개 청크를 ChromaDB에 저장했습니다. 각 청크에는 본문과 임베딩 벡터, 원본 파일명과 페이지 정보가 들어 있습니다.이번에는 저장한 자료에 질문을 던져보겠습니다.“삼성전자 실적에 환율이 미치는 영향은 무엇인가요?”이번 단계에서는 AI가 답변을 작성하지 않습니다. 질문과 관련된 문서 조각을 찾아 순서대로 보여주는 검색 기능을 만듭니다.어떤 자료를 찾아오는지 먼저 확인해야, 다음 편에서 답변 모델을 연결했을 때 문제가 검색에서 발생했는지 답변 생성에서 발생했는지 구분할 수 있습니다.1. 질문도 벡터로 바꿉니다3편에서는 보고서의 텍스트를 임베딩 모델로 변환했습니다. 이번에는 사용자의 질문을 같은 방식으.. 더보기 증권사 리포트로 만드는 나만의 로컬 AI Agent ④ — ChromaDB에 리서치 자료 저장하기 Python과 RAG로 시작하는 리포트 검색·전망 비교지난 편에서는 PDF에서 추출한 텍스트를 작은 청크로 나누고, 로컬 임베딩 모델로 벡터를 생성했습니다.현재 결과는 JSON 파일로 저장되어 있습니다. 각 파일에는 청크 본문, 임베딩 벡터, 원본 파일명과 페이지 정보가 들어 있습니다.이번에는 이 데이터를 ChromaDB에 저장하겠습니다. 저장한 데이터가 프로그램을 종료한 뒤에도 유지되는지, 같은 자료를 다시 넣었을 때 중복되지 않는지도 확인하겠습니다.이번 편의 목표는 질문에 관련된 문서를 검색할 수 있도록 로컬 벡터 DB를 준비하는 것입니다. 실제 질문 검색은 다음 편에서 연결합니다.1. JSON으로 저장했는데 DB가 왜 필요할까?JSON 파일을 읽어 벡터를 직접 비교하는 방식으로도 검색을 구현할 수 .. 더보기 이전 1 2 3 4 ··· 22 다음