Skip to content

kokooa/ai-backend

Repository files navigation

🤖 RAG 기반 AI 기술 면접관 (AI Backend Practice)

Node.js(Express)와 TypeScript, PostgreSQL(pgvector), Docker Compose를 활용하여 구축한 검색 증강 생성(RAG) 기반의 AI 면접 서비스입니다. 단순한 LLM 래퍼(Wrapper)가 아닌, Vector DB에 저장된 고유한 데이터를 바탕으로 정확한 답변을 생성하는 파이프라인을 직접 구현하였습니다.

🚀 프로젝트 목표

  • RAG (Retrieval-Augmented Generation) 아키텍처의 핵심 원리 이해 및 구현
  • **Vector Database (pgvector)**를 활용한 임베딩(Embedding) 저장 및 유사도 검색(Vector Search) 경험
  • Docker Compose를 활용한 데이터베이스 인프라 구축 및 **포트 포워딩(Port Forwarding)**을 통한 로컬 충돌 해결
  • LangChain 프레임워크를 활용한 LLM(Google Gemini)과 애플리케이션의 연동
  • TypeScript 기반의 백엔드 API 서버 구축 및 비동기 데이터 처리

🛠 Tech Stack

  • Language: TypeScript, Node.js
  • Framework: Express.js
  • Database: PostgreSQL (with pgvector extension)
  • AI Model: Google Gemini 2.0 Flash / 1.5 Flash (via LangChain)
  • Infrastructure: Docker, Docker Compose
  • Libraries: @langchain/google-genai, @prisma/client, cors

🏗 시스템 아키텍처

이 시스템은 사용자의 질문을 벡터로 변환하여 DB에서 가장 유사한 문맥(Context)을 검색한 뒤, LLM에게 참고 자료로 제공하여 답변을 생성합니다.

서비스 구성

  1. Express API Server (Node.js)
    • 클라이언트(Front-end)의 요청을 받는 진입점
    • LangChain을 통해 검색 및 생성 로직을 오케스트레이션
  2. Vector Database (PostgreSQL)
    • Docker 컨테이너 위에서 구동
    • 텍스트 데이터를 768차원의 벡터로 변환하여 저장
    • Cosine Distance(코사인 유사도) 기반의 검색 기능 제공
  3. Data Ingestion Pipeline (Ingest)
    • 텍스트 데이터를 청크(Chunk) 단위로 임베딩하여 DB에 적재하는 전처리 과정
  4. LLM (Google Gemini)
    • 검색된 정보(Context)를 바탕으로 자연스러운 답변을 생성하는 추론 엔진

데이터 흐름 (Data Flow)

User Query -> Express Server -> Embedding (Gemini) -> Vector Search (PostgreSQL) -> LLM Generation (Gemini) -> Client Response

📂 프로젝트 구조

.
├── prisma/              # DB 스키마 정의 (schema.prisma) 및 마이그레이션 관리
├── node_modules/        # 의존성 패키지
├── server.ts            # 메인 API 서버 (Express + RAG Logic)
├── ingest.ts            # 데이터 적재 스크립트 (Embedding -> DB Insert)
├── rag.ts               # RAG 로직 테스트용 스크립트
├── check-models.ts      # 사용 가능한 Gemini 모델 리스트 조회 유틸
├── docker-compose.yml   # PostgreSQL(pgvector) 컨테이너 설정
├── .env                 # 환경 변수 (API Key, DB URL)
├── index.html           # 테스트용 간단한 프론트엔드 UI
├── package.json         # 프로젝트 의존성 관리
└── README.md            # 프로젝트 문서

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors