jatinror's picture
Fix rag tool docstring
d2f2f5c
Raw
History Blame Contribute Delete
2.5 kB
import os
import chromadb
from smolagents import tool
from llama_index.core import (
StorageContext,
VectorStoreIndex,
SimpleDirectoryReader,
)
from llama_index.core.node_parser import SentenceSplitter
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
from llama_index.vector_stores.chroma import ChromaVectorStore
# -----------------------------
# Embedding model
# -----------------------------
embed_model = HuggingFaceEmbedding(
model_name="BAAI/bge-small-en-v1.5"
)
# -----------------------------
# Chroma DB
# -----------------------------
db = chromadb.PersistentClient(path="./chroma_db")
# -----------------------------
# Create collection if needed
# -----------------------------
try:
collection = db.get_collection("guest_stories")
except Exception:
print("Chroma DB not found. Creating it...")
documents = SimpleDirectoryReader(
"data/guest_stories"
).load_data()
splitter = SentenceSplitter(
chunk_size=512,
chunk_overlap=50,
)
nodes = splitter.get_nodes_from_documents(documents)
collection = db.get_or_create_collection("guest_stories")
vector_store = ChromaVectorStore(
chroma_collection=collection
)
storage_context = StorageContext.from_defaults(
vector_store=vector_store
)
VectorStoreIndex(
nodes,
storage_context=storage_context,
embed_model=embed_model,
)
print("Chroma DB created successfully.")
# -----------------------------
# Load vector store
# -----------------------------
vector_store = ChromaVectorStore(
chroma_collection=collection
)
index = VectorStoreIndex.from_vector_store(
vector_store=vector_store,
embed_model=embed_model,
)
retriever = index.as_retriever(similarity_top_k=1)
@tool
def search_guest_story(query: str) -> str:
"""
Search AI Gala guest stories and return relevant information.
Use this tool ONLY for:
- AI Gala guests
- speakers
- guest biographies
- guest backgrounds
- guest stories
Do NOT use this tool for:
- weather information
- event locations
- event planning
- laws or regulations
- general internet searches
Args:
query: A question about an AI Gala guest.
Returns:
Relevant guest story text.
"""
results = retriever.retrieve(query)
if not results:
return "No relevant guest story found."
return "\n\n".join(node.text for node in results)