61 lines
1.5 KiB
Markdown
61 lines
1.5 KiB
Markdown
# RAG Agent with ChromaDB and Web Search
|
|
|
|
This project demonstrates a simple Retrieval-Augmented Generation (RAG) agent that uses **ChromaDB** for vector storage and similarity search, and performs web search using DuckDuckGo.
|
|
|
|
## Features
|
|
|
|
- **Vector Store**: Stores embeddings in a local ChromaDB collection.
|
|
- **RAG Agent**: Retrieves relevant documents and constructs an answer.
|
|
- **Web Search**: Fetches top results from DuckDuckGo.
|
|
|
|
## Setup
|
|
|
|
```bash
|
|
# Clone the repository
|
|
git clone https://git.brojs.ru/kuzakhmetovartur/ekzamen-rag-agent-s-chromadb-i-veb-poisk.git
|
|
cd ekzamen-rag-agent-s-chromadb-i-veb-poisk
|
|
|
|
# Install dependencies
|
|
npm install
|
|
|
|
# Run the example
|
|
npm start
|
|
```
|
|
|
|
## Running Tests
|
|
|
|
```bash
|
|
npm test
|
|
```
|
|
|
|
## Configuration
|
|
|
|
The project uses a local ChromaDB instance by default. If you need to connect to a remote instance, set the following environment variables in a `.env` file:
|
|
|
|
```dotenv
|
|
CHROMA_HOST=localhost
|
|
CHROMA_PORT=8000
|
|
```
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
src/
|
|
index.js # Entry point
|
|
agent.js # RAG agent logic
|
|
vectorStore.js # ChromaDB wrapper
|
|
search.js # Web search helper
|
|
utils.js # Embedding helper
|
|
tests/
|
|
vectorStore.test.js
|
|
agent.test.js
|
|
```
|
|
|
|
## Notes
|
|
|
|
- The embedding function in `utils.js` is a deterministic placeholder. Replace it with a real embedding model (e.g., OpenAI embeddings) for production use.
|
|
- The agent currently returns concatenated context as the answer. Integrate a language model for richer responses.
|
|
|
|
## License
|
|
|
|
MIT License |