from praisonai.adapters import (
AutoReader,
ChromaVectorStore,
FusionRetriever,
LLMReranker
)
from praisonaiagents import Agent
# Load documentation
reader = AutoReader()
docs = reader.load("./docs/")
# Create vector store
store = ChromaVectorStore(
namespace="documentation",
persist_directory=".praison/docs_kb"
)
# Add documents with embeddings
store.add(
texts=[d.content for d in docs],
embeddings=get_embeddings([d.content for d in docs]),
metadatas=[d.metadata for d in docs]
)
# Create retriever
retriever = FusionRetriever(
vector_store=store,
embedding_fn=get_embedding,
num_queries=3,
top_k=10
)
# Create reranker
reranker = LLMReranker(model="gpt-4o-mini")
# Query function
def query_docs(question: str) -> str:
# Retrieve
results = retriever.retrieve(question, top_k=20)
# Rerank
reranked = reranker.rerank(
question,
[r.text for r in results],
top_k=5
)
# Format context
context = "\n\n".join([r.text for r in reranked])
# Generate answer with agent
agent = Agent(instructions="Answer based on the context provided")
return agent.chat(f"Context:\n{context}\n\nQuestion: {question}")
# Use
answer = query_docs("How do I deploy the application?")
print(answer)