Files
task-6a02e23da6fe2e4ac16acf…/README.md
T
2026-05-27 14:34:10 +00:00

61 lines
2.4 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.
# RAG Agent with Qdrant and Ollama
## Project Overview
This repository contains a minimal yet complete implementation of an AI agent that can **search** and **add** information to a local knowledge base powered by **Qdrant** (vector database) and **Ollama** (local LLM & embeddings). The agent is built using the LangChain framework.
The main components are:
- **Vector store** Qdrant client with an initialized collection.
- **Text splitter** RecursiveCharacterTextSplitter for chunking documents.
- **Embedding model** OllamaEmbeddings (`nomic-embed-text`).
- **LLM** ChatOllama (`llama3`).
- **Tools** `search_knowledge_base` and `add_to_knowledge_base`.
- **Agent** created with `create_agent` from LangChain.
- **CLI client** simple interactive loop to demonstrate adding documents and searching the knowledge base.
## Directory Structure
```
├── README.md
├── requirements.txt
├── main.py # CLI entry point
├── agent.py # Agent creation logic
├── tools.py # LangChain tool definitions
├── utils.py # Qdrant client, splitter, and helper functions
└── docs/ # Directory with text files to load initially (optional)
```
## Installation
```bash
# Pull required Ollama models
ollama pull llama3
ollama pull nomic-embed-text
# Install Python dependencies
pip install -r requirements.txt
```
## Usage
1. **Load documents** Place any `.txt` files in the `docs/` directory.
2. **Run the CLI**:
```bash
python main.py
```
3. In the interactive prompt you can use:
- `/add <file_path>` Add a new document to the knowledge base.
- `/search <query>` Search the knowledge base and display results.
- `/quit` Exit the program.
## Example
```text
> /search python data structures
1. Python lists are ordered collections...
2. Tuples are immutable sequences...
```
## Architecture
- The **agent** is a LangChain agent that uses two tools: `search_knowledge_base` and `add_to_knowledge_base`. It receives user messages, decides which tool to call, and returns the result.
- The **vector store** is wrapped by `QdrantVectorStore`, which handles embedding generation via OllamaEmbeddings. Documents are split into chunks before insertion.
- The **CLI** orchestrates loading documents at startup and provides a simple REPL for demonstration purposes.
## License
MIT © 2026