100 lines
3.1 KiB
Markdown
100 lines
3.1 KiB
Markdown
# Educational Agent with Retrieval-Augmented Generation (RAG) Memory
|
||
|
||
This repository contains a lightweight educational agent that demonstrates
|
||
Retrieval-Augmented Generation (RAG) using only Python standard libraries.
|
||
The implementation is fully self‑contained and does not rely on external
|
||
AI services or heavy dependencies, making it suitable for the Deep Agents
|
||
Virtual File System environment.
|
||
|
||
## Features
|
||
|
||
- **RAG Memory** – Stores documents and builds simple bag‑of‑words embeddings.
|
||
- **Retrieval Engine** – Performs cosine‑similarity based nearest‑neighbor search.
|
||
- **Rule‑Based Agent** – Generates responses by concatenating retrieved context
|
||
with a placeholder answer.
|
||
- **CLI** – Ask a question and receive an answer that includes relevant context.
|
||
|
||
## Project Structure
|
||
|
||
```
|
||
.
|
||
├── src
|
||
│ └── index.py # Main implementation
|
||
└── README.md # This file
|
||
```
|
||
|
||
## Installation
|
||
|
||
No external dependencies are required. The code uses only the Python
|
||
standard library.
|
||
|
||
```bash
|
||
# Clone the repository
|
||
git clone https://git.brojs.ru/kuzakhmetovartur/agent-s-rag-pamyatyu.git
|
||
cd agent-s-rag-pamyatyu
|
||
|
||
# Ensure you have Python 3.8+ installed
|
||
python3 --version
|
||
```
|
||
|
||
## Usage
|
||
|
||
1. **Prepare a data directory**
|
||
Place one or more `.txt` files in a directory. Each file will be
|
||
treated as a separate document. Example:
|
||
|
||
```
|
||
data/
|
||
├── doc1.txt
|
||
├── doc2.txt
|
||
└── doc3.txt
|
||
```
|
||
|
||
2. **Run the agent**
|
||
```bash
|
||
python3 src/index.py --data-dir data --question "What is the capital of France?"
|
||
```
|
||
|
||
The agent will:
|
||
- Load all `.txt` files from `data/`.
|
||
- Compute bag‑of‑words embeddings for each document.
|
||
- Retrieve the top 3 most relevant documents for the question.
|
||
- Print the question, retrieved context, and a placeholder answer.
|
||
|
||
## How It Works
|
||
|
||
1. **Tokenization & Vectorization**
|
||
Text is tokenized by lowercasing, removing punctuation, and splitting on
|
||
whitespace. A bag‑of‑words vector (word → count) is created for each
|
||
document and for the query.
|
||
|
||
2. **Similarity Calculation**
|
||
Cosine similarity between the query vector and each document vector is
|
||
computed using only standard Python data structures.
|
||
|
||
3. **Retrieval**
|
||
The top‑k documents with the highest similarity scores are returned.
|
||
|
||
4. **Response Generation**
|
||
The agent concatenates the question, the retrieved context snippets,
|
||
and a simple placeholder answer.
|
||
|
||
## Extending the Agent
|
||
|
||
- **Better Embeddings** – Replace the bag‑of‑words approach with a
|
||
lightweight embedding model (e.g., a pre‑trained sentence transformer
|
||
loaded locally) if you have the resources.
|
||
- **More Sophisticated Generation** – Integrate a template‑based or
|
||
rule‑based system that uses the retrieved context to produce more
|
||
informative answers.
|
||
- **Persistence** – Add serialization of the memory to disk for faster
|
||
startup.
|
||
|
||
## Individual Effort Statement
|
||
|
||
This work was completed independently by the author and does not rely
|
||
on external automated tools or AI services for the core implementation.
|
||
|
||
## License
|
||
|
||
MIT License – see `LICENSE` for details. |