๐ฐ๐ท ํ๊ตญ์ด
๐บ๐ธ English | ๐ฎ๐ณ เคนเคฟเคเคฆเฅ | ๐ฏ๐ต ๆฅๆฌ่ช | ๐จ๐ณ ็ฎไฝไธญๆ | ๐ช๐ธ Espaรฑol | ๐ง๐ท Portuguรชs (Brasil) | ๐ฐ๐ท ํ๊ตญ์ด | ๐ฉ๐ช Deutsch | ๐ซ๐ท Franรงais
Note: ์ด ๋ฌธ์๋ ๋ฒ์ญ๋ณธ์ ๋๋ค. ์์ด
README.md๊ฐ ๊ธฐ์ค ๋ฌธ์์ ๋๋ค.
RAG Container Template

์ด ์ ์ฅ์๋ ๋ก์ปฌ Retrieval-Augmented Generation (RAG) ์์คํ
์ ๊ตฌ์ถํ๊ธฐ ์ํ ํ์คํ ์๋๋ฐ์ค์
๋๋ค.
๋ฐฑ์๋๋ ์ธ์ฆ๊ณผ RAG API๋ฅผ ์ ๊ณตํ๋ FastAPI ์๋น์ค์ด๋ฉฐ, ์๊ตฌ ๋ฒกํฐ ์ ์ฅ์๋ก ChromaDB๋ฅผ ์ฌ์ฉํ๊ณ ์๋ฒ ๋ฉ๊ณผ ์ฑํ
๋ชจ๋์ Ollama๋ฅผ ์ฌ์ฉํฉ๋๋ค. ํ๋ก ํธ์๋๋ ๋ฐฑ์๋์ ํต์ ํ๋ Expo / React Native ์ฑ์
๋๋ค.
Features
- Backend
- FastAPI
- Frontend
- Expo / React-Native
- DataBase
- PostgreSQL
- RAG (Retrieval-Augmented Generation)
- Ollama๋ฅผ ์ฌ์ฉํ Embeddings
- ChromaDB๋ฅผ ์ฌ์ฉํ Vector store
- Chat / Answer generation
- DevOps
- Docker Compose
- GitHub Actions workflows
Architecture
+-----------------------------+
| Frontend (Expo) |
| - React Native app |
| - Calls backend /auth, |
| /items, /rag endpoints |
+--------------+--------------+
|
v
+-----------------------------+
| Backend (FastAPI) |
| - Auth & Items routers |
| - RAG router (/rag/...) |
| - SQLAlchemy + Postgres |
+--------------+--------------+
|
+-------+----------+
| |
v v
+-------------+ +------------------+
| ChromaDB | | Ollama (LLM) |
| Vector DB | | /api/chat |
| /chroma_db | | /api/embeddings |
+-------------+ +------------------+
๐ Getting Started
1. Prerequisites
2. Build and start all services:
# set environment variables:
export REACT_NATIVE_PACKAGER_HOSTNAME=${YOUR_HOST}
# Build the image
docker compose build
# Run the container
docker compose up
3. Test:
# Backend pytest
docker compose \
-f docker-compose.test.yml run \
--rm \
--entrypoint /bin/sh backend_test \
-lc 'pytest -q'
# Backend Lint
docker compose \
-f docker-compose.test.yml run \
--rm \
--entrypoint /bin/sh backend_test \
-lc 'ruff check /app /tests'
# Frontend Test
docker compose \
-f docker-compose.test.yml run \
--rm frontend_test
Visit the services:
-
Backend API: http://localhost:8000/docs

- Frontend UI (WEB): http://localhost:8081
- Frontend UI (mobile): exp://${YOUR_HOST}:8081: Expo์์ ์ ๊ณตํ๋ QR๋ก ์ ์ํฉ๋๋ค.

RAG API
Ingest documents
POST /rag/ingest
curl -X POST http://localhost:8000/rag/ingest \
-H "Content-Type: application/json" \
-d '{
"documents": [
{
"id": "miura_intro_001",
"text": "Miura Peninsula is located in Kanagawa, south of Yokohama. It is famous for its coastline, fresh seafood, and views of Mount Fuji on clear days.",
"source": "local-notes"
}
]
}'
Response:
{
"total_chunks": 1
}
Ask a question
POST /rag/query
curl -X POST http://localhost:8000/rag/query \
-H "Content-Type: application/json" \
-d '{
"question": "Where is the Miura Peninsula and what is it famous for?",
"top_k": 5
}'
Example response:
{
"answer": "The Miura Peninsula is in Kanagawa, south of Yokohama. It is known for its coastline, fresh seafood, and views of Mount Fuji on clear days.",
"chunks": [
{
"id": "miura_intro_001_0",
"text": "...",
"source": "local-notes",
"chunk_index": 0,
"distance": 0.01
}
]
}
License
- Apache License 2.0