Personal AI-powered knowledge base with RAG
Project description
stache-ai
A Python library for building AI-powered knowledge bases using Retrieval-Augmented Generation (RAG).
Overview
stache-ai provides a pluggable framework for ingesting documents, storing embeddings, and executing semantic search with optional reranking. It includes support for multiple vector databases, LLM providers, embedding models, and document formats.
Installation
Install the core package:
pip install stache-ai
Quick Start
from stache_ai.rag.pipeline import get_pipeline
# Get the pipeline (uses configured providers)
pipeline = get_pipeline()
# Ingest text
result = pipeline.ingest_text(
text="Your knowledge base content here",
metadata={"source": "example"}
)
print(f"Created {result['chunks_created']} chunks")
# Search
results = pipeline.query(
question="What is this about?",
top_k=5
)
for source in results['sources']:
print(f"- {source['text'][:100]}...")
Provider Packages
stache-ai uses a provider pattern to support different backends. Install optional provider packages to enable specific functionality:
AWS Providers
pip install "stache-ai[aws]"
Includes:
stache-ai-s3vectors- Amazon S3 Vectors for semantic searchstache-ai-dynamodb- Amazon DynamoDB for namespace and document index storagestache-ai-bedrock- Amazon Bedrock for LLMs and embeddings
Ollama
pip install "stache-ai[ollama]"
Includes:
stache-ai-ollama- Ollama for local LLM and embedding models
OpenAI
pip install "stache-ai[openai]"
Includes:
stache-ai-openai- OpenAI for GPT models and embeddings
Configuration
Configure stache-ai via environment variables or a .env file:
# Vector Database
VECTORDB_PROVIDER=s3vectors
VECTORDB_S3_REGION=us-east-1
VECTORDB_S3_INDEX_NAME=stache
# Embeddings
EMBEDDING_PROVIDER=bedrock
EMBEDDING_MODEL=cohere.embed-english-v3
# Namespaces
NAMESPACE_PROVIDER=dynamodb
NAMESPACE_DYNAMODB_TABLE=stache-namespaces
# LLM
LLM_PROVIDER=bedrock
LLM_MODEL=anthropic.claude-3-5-sonnet-20241022-v2:0
# Optional features
ENABLE_DOCUMENT_INDEX=true
EMBEDDING_AUTO_SPLIT_ENABLED=true
See src/stache_ai/config.py for all available options.
Usage Examples
Document Chunking
from stache_ai.chunking import ChunkingStrategy
# Recursive character-level chunking
chunks = ChunkingStrategy.create(
strategy="recursive",
chunk_size=1024,
chunk_overlap=100
).chunk("Your document text")
for chunk in chunks:
print(chunk)
Filtering Results
# Search with metadata filter
results = pipeline.query(
question="API documentation",
filter={"source": "docs"}
)
Namespace Isolation
# Ingest to a specific namespace
pipeline.ingest_text(
text="Project A data",
namespace="project-a"
)
# Search within a namespace
results = pipeline.query(
question="Find related content",
namespace="project-a"
)
API Server
Run a FastAPI server for HTTP access:
pip install stache-ai[dev]
python -m stache_ai.api.main
Server exposes endpoints for:
/api/query- Semantic search/api/capture- Text ingestion/api/namespaces- Manage namespaces/api/documents- List and retrieve documents/api/upload- Upload files (PDF, DOCX, etc.)
CLI Tools
Admin CLI (stache-admin)
# Import documents from a directory
stache-import /path/to/documents --namespace my-docs
# List namespaces
stache-admin namespace-list
# View vector statistics
stache-admin vectors stats
User CLI (stache-tools)
For search, ingest, and MCP server, install stache-tools:
pip install stache-tools
# Search
stache search "your query"
# Ingest text
stache ingest -t "your text" -n namespace
Testing
pip install stache-ai[dev]
pytest
Documentation
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file stache_ai-0.1.9.tar.gz.
File metadata
- Download URL: stache_ai-0.1.9.tar.gz
- Upload date:
- Size: 147.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
33491e7d69a746de4d3b3091a0075284af5bdada185adca8df722550ec6bef00
|
|
| MD5 |
d731f254b0dc148a0e37caa33b18ed4e
|
|
| BLAKE2b-256 |
6efb3d6ff091534fe0cfd0c17a92e77ec68e60d306eb3dc7cefda32fb9c2da68
|
File details
Details for the file stache_ai-0.1.9-py3-none-any.whl.
File metadata
- Download URL: stache_ai-0.1.9-py3-none-any.whl
- Upload date:
- Size: 159.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cd0e5b3108287e204d43f331d3bc95b7847fbb94f7deef83ba46937fd2450e6e
|
|
| MD5 |
7c179a9094791544326c96d6366744f1
|
|
| BLAKE2b-256 |
25b7c7bd4c395a61dfe79ac34fe67acdcd6832bf526b611c08b5dfd03611c807
|