RAGTool
The RAGTool
provides Retrieval-Augmented Generation (RAG) capabilities for agents. This tool allows agents to manage knowledge bases, index content, and perform semantic searches to retrieve relevant information.
Features
- Create and manage knowledge indexes
- Save and index content from text, files, or URLs
- Search indexed content using semantic or hybrid search
- Review and manage indexed documents
- Chunking and embedding of content
Initialization
def __init__(default_index: str = "knowledge_base", index_paths: list[str] = [])
Parameters:
default_index (str)
: Name of the default vector store index (default: "knowledge_base")index_paths (list[str])
: List of files or glob patterns to index during initialization
Methods
save_content_to_knowledge_index
def save_content_to_knowledge_index(run_context: RunContext, content: str = None, index_name: str = None) -> str
Save content to a knowledge index. Accepts both text and file paths/URLs.
Parameters:
run_context (RunContext)
: The execution contextcontent (str)
: Text content or path to file/URL to indexindex_name (str)
: Name of the index to save to (defaults to default_index)
Returns: Status message indicating success or failure.
search_knowledge_index
def search_knowledge_index(query: str = None, limit: int = 1, hybrid: bool = False) -> str
Search a knowledge index for relevant documents.
Parameters:
query (str)
: The search querylimit (int)
: Maximum number of results to return (default: 1)hybrid (bool)
: Whether to use hybrid search (vector + text) (default: False)
Returns: List of dictionaries containing search results with metadata.
list_documents
def list_documents() -> str
List all documents in a knowledge index.
Returns: String containing document information.
review_full_document
def review_full_document(document_id: str = None) -> str
Review a full document from a knowledge index.
Parameters:
document_id (str)
: ID of the document to review
Returns: String containing the full document content.
Example Usage
from agentic.common import Agent
from agentic.tools import RAGTool
# Create a RAG tool with default settings
rag_tool = RAGTool()
# Create an agent with RAG capabilities
knowledge_agent = Agent(
name="Knowledge Assistant",
instructions="You help users find information in the knowledge base.",
tools=[rag_tool]
)
# Index a file
response = knowledge_agent << "Save this document to the knowledge base: https://www.iana.org/reports/2014/transition-plan-201404.pdf"
print(response)
# Search for information
response = knowledge_agent << "What does the document say about the transistion of iana?"
print(response)
# Create a RAG tool with pre-indexed files
pre_indexed_rag = RAGTool(
default_index="documentation",
index_paths=["./docs/*.md"]
)
# Create an agent with pre-indexed documentation
docs_agent = Agent(
name="Documentation Helper",
instructions="You help users find information in the documentation.",
tools=[pre_indexed_rag]
)
# Use the agent with pre-indexed content
response = docs_agent << "How do I install this software?"
print(response)
Implementation Details
The RAGTool uses:
- Weaviate as the vector database backend
- Chunking to break documents into manageable pieces
- Embedding models to generate vector representations
- Document metadata tracking for source attribution
- Automatic deduplication of content
CLI Integration
The tool integrates with Agentic's CLI for index management:
# Index a file
agentic index_file my_index path/to/document.pdf
# Search the index
agentic search my_index "my search query"
# List documents in an index
agentic list-documents my_index
Notes
- The tool automatically handles document processing, chunking, and embedding
- Content is indexed in real-time
- Search supports both pure vector similarity and hybrid search
- Documents can be retrieved in full or as relevant chunks
- The tool tracks document metadata including source, timestamp, and fingerprints