"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 활용으로 데이터 소유권 확보

- LangChainRecursiveCharacterTextSplitter를 통해 데이터 처리 유연성 확보

- inserirNovosArquivos 함수를 통해 데이터베이스 업데이트 효율성 극대화

- Persona 설정을 통한 모델 행동 제어 (보안 및 범위 제한)