Update README.md

This commit is contained in:
2026-06-04 22:56:48 +00:00
parent 5a048e68e2
commit e8d12abe75
+63 -29
View File
@@ -1,50 +1,84 @@
# RAG Agent with Qdrant and Ollama # RAGAgent with Qdrant & Ollama
This repository contains a minimal but fullyfunctional example of an AI agent that uses **Qdrant** as a local vector store, **Ollama** for embeddings and a local LLM, and **LangChain** for the agent logic. This repository contains a minimal but functional implementation of a **RAG (RetrievalAugmented Generation) agent** that:
## Features * Stores embeddings in a **Qdrant** vector database.
* Generates embeddings with **Ollama** (`nomic-embed-text`).
* Uses **LangChain** (v1+) for the agent, tools and promptengineering.
* **Semantic search** `search_knowledge_base` tool queries the vector store. The agent can:
* **Document ingestion** `add_to_knowledge_base` tool splits text into chunks and stores them.
* **Interactive CLI** simple command line interface for adding documents, searching and chatting with the agent.
* **Modular design** vector store, tools and agent logic are separated into distinct modules.
## Setup * Search the knowledge base (`/search`).
* Add new documents (`/add`).
* Interact through a simple CLI.
## Installation
```bash ```bash
# 1. Install Ollama models # 1. Pull required Ollama models
ollama pull llama3 ollama pull llama3
ollama pull nomic-embed-text ollama pull nomic-embed-text
# 2. Install Python dependencies # 2. Install Python dependencies
pip install -r requirements.txt pip install -r requirements.txt
# 3. Start Qdrant (Docker recommended) # 3. Run the CLI
# docker run -p 6333:6333 qdrant/qdrant 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 ## Usage
### Load documents from a folder
```bash ```bash
python -m workspace.task-6a02e23da6fe2e4ac16acf65.cli python -m src.loader /path/to/text/files
``` ```
The CLI accepts the following commands: ### Start the interactive CLI
* `/add <title>` add a new document. After the title you will be prompted to paste the content; finish with a line containing only `END`.
* `/search <query>` perform a semantic search.
* `/quit` exit.
Anything else is forwarded to the agent.
## Project structure
```bash
python -m src.cli
``` ```
workspace/
├── task-6a02e23da6fe2e4ac16acf65/ - `/add` add a new document.
│ ├── agent.py # Agent and tool definitions - `/search` perform a semantic search.
│ ├── cli.py # Interactive command line interface - `/quit` exit.
│ ├── vector_store.py # Qdrant + Ollama wrapper
│ ├── requirements.txt Any other input is treated as a user message and processed by the agent.
│ └── README.md
``` ## 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!