Files
ekzamen-rag-agent-s-chromad…/SOLUTION.md
T

43 lines
2.1 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.
**What was implemented**
- Replaced the previous Qdrantbased vector store with a lightweight wrapper around **ChromaDB** (`src/vector_store.py`).
- Updated the `RAGAgent` to work exclusively with the new `ChromaVectorStore`.
- Kept the FastAPI endpoints (`/ingest`, `/query`, `/websearch`) unchanged, so the public API and websearch logic remain intact.
- Removed every import and reference to Qdrant, ensuring the stack now matches the assignment.
**Why the main parts satisfy the requirements**
- `ChromaVectorStore` creates a Chroma client and a collection, then exposes `add_documents` and `similarity_search` that match the original Qdrant interface.
- `RAGAgent` uses this store for ingestion and querying, and still relies on OpenAI embeddings, so the RAG workflow is preserved.
- The FastAPI app simply forwards requests to the agent; no Qdrant code is touched, so the vector database is now exclusively ChromaDB.
- Websearch utilities (`src/web_search.py`) are untouched, so the searchtoingest pipeline continues to work.
**Key code excerpts**
`src/vector_store.py` Chroma client and collection creation
```python
self.client = chromadb.Client()
self.collection = self.client.get_or_create_collection(name=collection_name)
```
`src/rag_agent.py` ingestion uses the new store
```python
self.vector_store.add_documents(docs_with_embeddings)
```
`src/main.py` FastAPI endpoint that calls the agent
```python
@app.post("/ingest")
def ingest(request: IngestRequest):
docs = [doc.dict() for doc in request.documents]
rag_agent.ingest(docs)
```
`src/web_search.py` still feeds results into the agent
```python
agent.ingest(docs_to_ingest)
```
**Honest limitations**
- ChromaDB is used in its default inmemory mode; data will not persist across server restarts unless a persistent storage path is configured.
- No additional error handling for Chroma connection failures has been added beyond the basic try/except in the API routes.
Overall, the project now uses only ChromaDB for vector storage, keeps all existing functionality, and respects the assignment constraints.