Files
task-6a02e23da6fe2e4ac16acf65/README.md
T
2026-06-04 22:56:48 +00:00

84 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# RAGAgent with Qdrant & Ollama
This repository contains a minimal but functional implementation of a **RAG (RetrievalAugmented Generation) agent** that:
* Stores embeddings in a **Qdrant** vector database.
* Generates embeddings with **Ollama** (`nomic-embed-text`).
* Uses **LangChain** (v1+) for the agent, tools and promptengineering.
The agent can:
* Search the knowledge base (`/search`).
* Add new documents (`/add`).
* Interact through a simple CLI.
## Installation
```bash
# 1. Pull required Ollama models
ollama pull llama3
ollama pull nomic-embed-text
# 2. Install Python dependencies
pip install -r requirements.txt
# 3. Run the CLI
python -m src.cli
```
> **Note**: Qdrant must be running locally on port 6333. You can start it using Docker:
>
> ```bash
> docker run -p 6333:6333 qdrant/qdrant
> ```
## Directory structure
```
workspace/task-6a02e23da6fe2e4ac16acf65/
├─ src/
│ ├─ vector_store.py # Qdrant wrapper
│ ├─ tools.py # LangChain tools
│ ├─ agent.py # Agent implementation
│ ├─ loader.py # Utility for bulk loading
│ └─ cli.py # Interactive CLI
├─ requirements.txt
└─ README.md
```
## Usage
### Load documents from a folder
```bash
python -m src.loader /path/to/text/files
```
### Start the interactive CLI
```bash
python -m src.cli
```
- `/add` add a new document.
- `/search` perform a semantic search.
- `/quit` exit.
Any other input is treated as a user message and processed by the agent.
## How it works
1. **Vector store** `KnowledgeBase` wraps `QdrantVectorStore`. It splits documents into chunks using `RecursiveCharacterTextSplitter`, embeds them with `OllamaEmbeddings`, and stores the vectors.
2. **Tools** Two tools (`search_knowledge_base`, `add_to_knowledge_base`) are exposed to the agent via LangChain's `@tool` decorator.
3. **Agent** Built with `create_tool_calling_agent` and `AgentExecutor`. The system prompt encourages the assistant to use the tools.
4. **CLI** Provides a simple REPL for adding documents, searching, and chatting with the agent.
## Extending
* Replace the embedding model with any Ollama model.
* Swap Qdrant for another vector store supported by LangChain.
* Add more tools (e.g., delete, update) following the same pattern.
---
Happy experimenting!