RAG Agent with Ollama

This project implements a simple Retrieval-Augmented Generation (RAG) agent that uses Ollama for both embeddings and LLM inference.
The agent stores documents in memory, retrieves the most relevant ones for a query, and generates an answer using the retrieved context.

Features

  • Embeddings – Uses Ollama’s embedding endpoint (ollama.embeddings) with caching.
  • LLM – Uses Ollama’s chat endpoint (ollama.chat) for generation.
  • RAG – Cosine similarity based retrieval of top‑k documents.
  • FastAPI – Exposes a REST API for adding documents and asking questions.
  • Docker – Containerized with Ollama and FastAPI.

Setup

# Clone the repo
git clone https://git.brojs.ru/kuzakhmetovartur/agent-s-rag-pamyatyu.git
cd agent-s-rag-pamyatyu

# Build Docker image
docker build -t rag-agent .

# Run container
docker run -p 8000:8000 rag-agent

The API will be available at http://localhost:8000.

API Endpoints

Method Path Description
POST /documents Add a document to the agent.
POST /ask Ask a question; returns answer.

Example

# Add a document
curl -X POST http://localhost:8000/documents \
     -H "Content-Type: application/json" \
     -d '{"text":"Python is a programming language."}'

# Ask a question
curl -X POST http://localhost:8000/ask \
     -H "Content-Type: application/json" \
     -d '{"query":"What is Python?"}'

Dependencies

  • ollama – Ollama client for embeddings and chat.
  • fastapi – Web framework.
  • uvicorn – ASGI server.
  • numpy – Numerical operations.
  • pydantic – Data validation.

All dependencies are listed in requirements.txt.

License

MIT License

This implementation follows the assignment constraints: only Ollama is used for embeddings and LLM, no OpenAI services are involved.

S
Description
BroJS: Агент с RAG-памятью
Readme
145 KiB
0 Stars 1 Watchers 0 Forks
Languages
Python 67.1%
TypeScript 16.6%
JavaScript 15.4%
Dockerfile 0.9%