피드로 돌아가기
Dev.toAI/ML
원문 읽기
Ollama와 PostgreSQL로 Java 기반 RAG 파이프라인을 구축하여 유료 API 없이 자체 데이터 기반 정확한 LLM 응답을 생성함
Build a RAG Pipeline in Java (Text Vector LLM, No Paid APIs)
AI 요약
Context
LLM은 훈련 시점의 정적 데이터만 학습하므로 사내 데이터나 비공개 데이터에 대한 질문에 부정확하거나 범용적인 답변을 생성함. 기존 방식은 데이터 접근성, 정적 지식, 환각(Hallucination) 문제로 한계가 있음.
Technical Solution
- EmbeddingService: Ollama의 nomic-embed-text 모델을 호출하여 텍스트를 768차원 벡터로 변환함
- StorageService: 변환된 벡터와 원본 텍스트를 PostgreSQL의 VECTOR(768) 타입 컬럼에 저장함
- Retriever: 사용자의 쿼리를 임베딩으로 변환 후
<->연산자로 벡터 유사도 검색을 수행하여 Top-K 결과를 반환함 - LLMService: 검색된 컨텍스트와 질문을 프롬프트에 주입하여 Ollama의 llama3 모델이 문맥 기반 답변을 생성하도록 함
Impact
완전 오프라인 환경에서 유료 API 없이 자체 지식베이스 기반 정확한 응답 생성 가능함.
Key Takeaway
RAG 아키텍처에서 데이터 검색과 답변 생성이 명확히 분리되어야 함. LLM은 데이터를 검색하지 않으며, DB는 답변을 생성하지 않음. 각 컴포넌트가 자신의 역할에 집중할 때 시스템의 신뢰성이 확보됨.
실천 포인트
사내 문서나 비공개 데이터 기반 LLM 어시스턴트를 구축할 때 PostgreSQL pgvector 확장 + Ollama 조합을 활용하면 API 비용 없이 RAG 파이프라인을 구현할 수 있음. 텍스트 Chunk 단위 분할 시 의미적 완결성을 유지하는 크기 설정이 검색 품질에 직접적 영향을 미침.