"Juci"의 RAG 아키텍처 기술 분석
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
인공지능
대상자
AI 개발자, 소프트웨어 엔지니어, RAG 기술 구현자
(난이도: 중급 이상, LLM 및 벡터 데이터베이스 이해 필수)
핵심 요약
- RAG 아키텍처 핵심 구성 요소: Llama 3.1 8B (LLM), Qdrant (벡터 DB), LangChain (오케스트레이션 프레임워크)
- 데이터 관리 전략:
chatbot
/blog
컬렉션 분리,inserirNovosArquivos
함수를 통한 일관된 업데이트 - 사용자 요청 처리 흐름:
custom_prompt
함수로 동시 검색 (k=5, k=15) → 문맥 통합 및 Persona 설정 → LLM 응답 생성
섹션별 세부 요약
1. **Componentes da Arquitetura e Stack Tecnológico**
- LLM: Llama 3.1 8B (로컬 실행, Ollama 서빙)
- Embedding 모델:
mixedbread-ai/mxbai-embed-2d-large-v1
(Hugging Face API 사용) - 벡터 DB: Qdrant (코사인 유사도 검색 최적화)
- 오케스트레이션: LangChain (
DataFrameLoader
,RecursiveCharacterTextSplitter
사용)
2. **Ingestão e Manutenção Incremental da Base de Conhecimento**
- 데이터 분리:
chatbot
(FAQ),blog
(TJAP 공식 정보) 컬렉션 별도 관리 - 업데이트 전략:
- inserirNovosArquivos
함수로 기존 문서 존재 여부 검증 (메타데이터 필터링)
- 새로운 문서만 처리 (Chunk 분할 및 벡터화)
- 성능 효과: 재처리 시간 절감 (전체 문서 재처리 대신 필요한 부분만 처리)
3. **O Pipeline RAG em Execução**
- 사용자 요청 처리:
- TCP 서버 (socket
모듈)로 요청 수신
- custom_prompt
함수로 동시 검색 (두 컬렉션 병렬 처리)
- 문맥 통합:
- 검색 결과를 하나의 텍스트 블록으로 결합
- Persona 설정 (모델의 역할, 응답 규칙 정의)
- 최종 응답 생성:
- LLM에 최종 프롬프트 전달 → 응답 생성 및 사용자에게 반환
결론
- RAG 아키텍처 설계 팁:
- 로컬 LLM + 벡터 DB 활용으로 데이터 소유권 확보
- LangChain
과 RecursiveCharacterTextSplitter
를 통해 데이터 처리 유연성 확보
- inserirNovosArquivos
함수를 통해 데이터베이스 업데이트 효율성 극대화
- Persona 설정을 통한 모델 행동 제어 (보안 및 범위 제한)