전체 글 썸네일형 리스트형 증권사 리포트로 만드는 나만의 로컬 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 파일을 읽어 벡터를 직접 비교하는 방식으로도 검색을 구현할 수 .. 더보기 증권사 리포트로 만드는 나만의 로컬 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의 근거 문장 선택화면 위쪽에는 실제 예측 상태를 항상 표시합니다... 더보기 이전 1 2 3 4 ··· 22 다음