updated local deepseek rag app

This commit is contained in:
ShubhamSaboo 2025-02-13 20:26:35 -06:00
parent 4cc031fd60
commit 7dc8d371a6
2 changed files with 19 additions and 15 deletions

View file

@ -6,7 +6,7 @@ A powerful reasoning agent that combines local Deepseek models with RAG capabili
- **Dual Operation Modes**
- Local Chat Mode: Direct interaction with Deepseek locally
- RAG Mode: Enhanced reasoning with document context and web search integration - llama3.1:8b
- RAG Mode: Enhanced reasoning with document context and web search integration - llama3.2
- **Document Processing** (RAG Mode)
- PDF document upload and processing
@ -15,7 +15,6 @@ A powerful reasoning agent that combines local Deepseek models with RAG capabili
- Vector storage in Qdrant cloud
- **Intelligent Querying** (RAG Mode)
- Query rewriting using Gemini
- RAG-based document retrieval
- Similarity search with threshold filtering
- Automatic fallback to web search
@ -50,14 +49,10 @@ ollama pull deepseek-r1:7b
ollama pull snowflake-arctic-embed
ollama run llama3.2
ollama pull llama3.2
```
### 2. Google API Key (for RAG Mode)
1. Go to [Google AI Studio](https://aistudio.google.com/apikey)
2. Sign up or log in to your account
3. Create a new API key
### 3. Qdrant Cloud Setup (for RAG Mode)
### 2. Qdrant Cloud Setup (for RAG Mode)
1. Visit [Qdrant Cloud](https://cloud.qdrant.io/)
2. Create an account or sign in
3. Create a new cluster
@ -65,7 +60,7 @@ ollama run llama3.2
- Qdrant API Key: Found in API Keys section
- Qdrant URL: Your cluster URL (format: `https://xxx-xxx.cloud.qdrant.io`)
### 4. Exa AI API Key (Optional)
### 3. Exa AI API Key (Optional)
1. Visit [Exa AI](https://exa.ai)
2. Sign up for an account
3. Generate an API key for web search capabilities

View file

@ -3,10 +3,8 @@ import tempfile
from datetime import datetime
from typing import List
import streamlit as st
import google.generativeai as genai
import bs4
from agno.agent import Agent
from agno.models.google import Gemini
from agno.models.ollama import Ollama
from langchain_community.document_loaders import PyPDFLoader, WebBaseLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
@ -18,8 +16,14 @@ from agno.tools.exa import ExaTools
from agno.embedder.ollama import OllamaEmbedder
class OllamaEmbedderr(Embeddings):
class OllamaEmbedder(Embeddings):
def __init__(self, model_name="snowflake-arctic-embed"):
"""
Initialize the OllamaEmbedderr with a specific model.
Args:
model_name (str): The name of the model to use for embedding.
"""
self.embedder = OllamaEmbedder(id=model_name, dimensions=1024)
def embed_documents(self, texts: List[str]) -> List[List[float]]:
@ -139,8 +143,13 @@ if st.session_state.use_web_search:
# Utility Functions
def init_qdrant():
"""Initialize Qdrant client with configured settings."""
def init_qdrant() -> QdrantClient | None:
"""Initialize Qdrant client with configured settings.
Returns:
QdrantClient: The initialized Qdrant client if successful.
None: If the initialization fails.
"""
if not all([st.session_state.qdrant_api_key, st.session_state.qdrant_url]):
return None
try:
@ -234,7 +243,7 @@ def create_vector_store(client, texts):
vector_store = QdrantVectorStore(
client=client,
collection_name=COLLECTION_NAME,
embedding=OllamaEmbedderr()
embedding=OllamaEmbedder()
)
# Add documents