전체 글 썸네일형 리스트형 증권사 리포트로 만드는 나만의 로컬 AI Agent ④ — ChromaDB에 리서치 자료 저장하기 Python과 RAG로 시작하는 리포트 검색·전망 비교지난 편에서는 PDF에서 추출한 텍스트를 작은 청크로 나누고, 로컬 임베딩 모델로 벡터를 생성했습니다.현재 결과는 JSON 파일로 저장되어 있습니다. 각 파일에는 청크 본문, 임베딩 벡터, 원본 파일명과 페이지 정보가 들어 있습니다.이번에는 이 데이터를 ChromaDB에 저장하겠습니다. 저장한 데이터가 프로그램을 종료한 뒤에도 유지되는지, 같은 자료를 다시 넣었을 때 중복되지 않는지도 확인하겠습니다.이번 편의 목표는 질문에 관련된 문서를 검색할 수 있도록 로컬 벡터 DB를 준비하는 것입니다. 실제 질문 검색은 다음 편에서 연결합니다.1. JSON으로 저장했는데 DB가 왜 필요할까?JSON 파일을 읽어 벡터를 직접 비교하는 방식으로도 검색을 구현할 수 .. 더보기 증권사 리포트로 만드는 나만의 로컬 AI Agent ③ — 문서를 나누고 벡터로 바꾸기 Python과 RAG로 시작하는 리포트 검색·전망 비교지난 편에서는 삼성전자 리포트 5개에서 텍스트를 추출했습니다. 사람이 확인할 수 있는 TXT와, 프로그램이 읽을 수 있는 페이지별 JSON으로 저장하는 단계였습니다.이번에는 이 텍스트를 질문과 관련된 내용을 검색할 수 있는 형태로 바꿔보겠습니다.이번 편의 작업은 두 가지입니다.페이지별 텍스트를 작은 조각인 **청크(Chunk)**로 나눕니다.각 청크를 로컬 임베딩 모델로 **벡터(Vector)**로 변환합니다.Python 파일은 아래 요청문을 이용해 코딩 AI에게 만들도록 요청한 뒤 실행하는 방식으로 진행하겠습니다. 실제 보고서 본문은 블로그에 공개하지 않고, 처리 결과와 데이터 구조를 중심으로 확인하겠습니다.1. 왜 문서를 작은 조각으로 나눌까?사용.. 더보기 증권사 리포트로 만드는 나만의 로컬 AI Agent ② — PDF 수집과 텍스트 추출 Python과 RAG로 시작하는 리포트 검색·전망 비교지난 편에서는 증권사 리포트를 검색하고 비교하는 로컬 AI Agent의 목표와 전체 흐름을 정리했습니다.이번 편에서는 준비한 PDF를 Python으로 읽어보겠습니다.목표는 삼성전자 리포트 5개에서 텍스트를 추출하고, 원본 파일명과 페이지 번호를 함께 저장하는 것입니다. 아직 AI 모델이나 벡터 DB는 사용하지 않습니다. 먼저 다음 단계에 전달할 자료를 제대로 준비하는 데 집중하겠습니다.1. 실습할 리포트 준비하기이번 프로젝트에서는 다음 다섯 보고서를 사용합니다.증권사보고서 발행일유안타증권2026.09.23유진투자증권2026.09.29IBK투자증권2026.10.02SK증권2026.10.06메리츠증권2026.10.07모두 삼성전자의 2026년 3분기 예상.. 더보기 증권사 리포트로 만드는 나만의 로컬 AI Agent ① — RAG란 무엇이고, 무엇을 만들 것인가? Python과 RAG로 시작하는 리포트 검색·전망 비교같은 기업을 분석한 증권사 리포트라도 예상 실적과 강조하는 내용은 조금씩 다릅니다.어떤 보고서는 메모리 가격 상승을 중요하게 보고, 다른 보고서는 환율이나 주주환원에 주목합니다. 여러 보고서를 나란히 읽다 보면 이런 질문이 생깁니다.“각 증권사가 예상한 실적은 얼마나 다를까?”“전망이 다른 이유는 무엇일까?”“이 설명은 어느 보고서의 몇 페이지에 있었지?”이번 시리즈에서는 이런 질문을 도와줄 프로그램을 직접 만들어보려고 합니다.증권사 PDF 리포트를 내 PC에 저장하고, 한국어로 질문하면 관련 내용을 찾아 출처와 함께 답하는 도구입니다. 기본 질의응답을 완성한 뒤에는 증권사별 전망을 비교하고, 필요한 계산 도구를 선택하는 로컬 AI Agent로 확장할.. 더보기 [농산물 Market AI Agent 시즌2] ⑫ Streamlit으로 예측과 근거를 한 화면에 — 시즌2 마무리 시즌2에서는 농산물 데이터를 수집하고 저장하는 것부터 시작했습니다.데이터의 품질을 확인하고, 지표를 계산하고, 가상 데이터로 예측 모델을 학습했습니다. 이후 모델을 Agent의 Tool로 연결하고, 실습 기록에서 근거를 검색하는 기능도 만들었습니다.이번 12편은 시즌2의 마지막 편입니다.지금까지 터미널에서 실행했던 기능을 Streamlit 화면으로 연결하겠습니다.사용자가 가상 사례를 선택하면 모델 결과를 확인하고, 질문을 입력하면 실습 문서에서 관련 근거를 찾을 수 있도록 만들어보겠습니다.1. 이번 편에서 만들 화면화면은 두 개의 탭으로 구성합니다.탭기능가상 예측사례 A·B를 선택해 모델 실행문서 검색과 근거실습 문서 검색 및 Ollama의 근거 문장 선택화면 위쪽에는 실제 예측 상태를 항상 표시합니다... 더보기 [농산물 Market AI Agent 시즌2] ⑪ 문서를 검색하고 출처를 보여주는 RAG 만들기 지난 10편에서는 학습한 모델을 Agent의 Tool로 연결했습니다.가상 사례 A와 B는 모델을 호출하고, 실제 시장 예측 요청에는 LIVE_NOT_READY 상태를 반환하도록 만들었습니다.이번에는 Agent에 문서 검색 기능을 붙여보겠습니다.사용자가 다음과 같이 질문하는 상황입니다.“단위와 등급을 확인하지 못하면 어떻게 하나요?”우리는 앞선 실습에서 이 문제를 확인했습니다. 하지만 LLM이 그 기록을 보지 못한다면 일반적인 설명만 하거나, 확인하지 않은 내용을 답할 수도 있습니다.이번 편에서는 관련 기록을 검색한 뒤, 문서에서 찾은 문장과 출처를 함께 보여주는 기능을 만듭니다.실제 예측을 보류한 이유와 가상 모델의 한계를 문서에 남기고, Agent가 그 기록을 찾아 답하도록 만드는 실습입니다.1. 이번.. 더보기 [농산물 Market AI Agent 시즌2] ⑩ 예측 모델을 Agent의 Tool로 연결하기 — 준비되지 않은 예측은 멈추도록 지난 8편에서는 첫 머신러닝 모델을 학습하고 저장했습니다.9편에서는 여러 시점에서 다시 학습하며 예측 결과를 비교했습니다.이제 저장한 모델을 Agent가 사용할 수 있도록 연결해보겠습니다.이번 목표는 다음과 같습니다.“가상 사례 A를 예측해줘”라고 질문하면 Agent가 예측 Tool을 선택하고, Python이 저장된 모델을 실행한다.그리고 한 가지를 더 구현하겠습니다.실제 예측이 준비되지 않았다면 숫자를 만들어내지 않고, 준비되지 않았다는 상태를 반환한다.1. 이번 편에서 연결할 범위현재 실제 데이터에는 단위·등급 등 비교 조건을 확인해야 하는 문제가 남아 있습니다.따라서 이번에는 다음 두 기능을 연결합니다.모델 상태 확인가상 사례의 모델 예측실제 농산물의 현재 가격을 조회해 예측하는 기능은 연결하지 않.. 더보기 [농산물 Market AI Agent 시즌2] ⑨ 과거로 돌아가 예측해보자 — 반복 검증과 놓친 상승 분석하기 지난 8편에서는 첫 머신러닝 모델을 만들었습니다.가격과 과거 7일 가격 변화율을 입력으로 사용하고, 7일 뒤 가격이 5% 이상 상승할지 예측했습니다.가상 데이터의 검증 결과는 정확도 100%였습니다.하지만 가상 가격에는 단순한 반복 규칙이 있었습니다.매일 일정하게 상승 ↓28일마다 초기 가격으로 복귀 ↓다시 같은 방식으로 상승이 결과만으로 실제 시장에서도 잘 작동한다고 말할 수는 없습니다.이번에는 다음 질문을 살펴보겠습니다.과거의 여러 시점에서 다시 학습해도 결과가 같을까?가격이 움직이는 방식이 바뀌면 어떤 실수를 할까?1. 한 번의 검증에서 여러 시점의 검증으로8편에서는 학습 구간으로 모델을 한 번 학습한 뒤 검증 구간 전체를 예측했습니다.학습 구간 ↓모델 하나 학습 ↓검증 구간 .. 더보기 이전 1 2 3 4 ··· 21 다음