<!– generated-by: gsd-doc-writer –> Embenx Documentation (v1.5.1) 🚀 ==============================
The Agentic Memory Layer & Universal Retrieval Toolkit.
Embenx is a high-performance Python library designed for the modern AI ecosystem. It bridges the gap between raw vector indices and full-blown vector databases, providing a unified API for 20+ vector backends, advanced filtering, hybrid search, and specialized memory structures for AI agents.
Contents:
- Creating a Collection
- Inserting Data
- Performing Search
- OpenSearch Example
- Hybrid Search (Dense + Sparse)
- Advanced Search Patterns
- Serialization
- Evaluation & Benchmarking
- Synthetic Data Generation
- General Commands
- Benchmarking
- Agentic & Visual
- Retrieval Zoo
- Maintenance
- Visual Tools & Dashboard
- Research-Driven Optimizations
- Agentic Memory structures
- Core
- Benchmark
- Reranking
- Data & Zoo
- LLM & Embedding
- Agentic & MCP
- Indexers
- Contributing
Key Capabilities¶
Unified Collection API: A table-like interface for managing vectors and metadata seamlessly.
Hybrid Search (RRF): Combine dense semantic search with sparse BM25 keyword search using Reciprocal Rank Fusion.
Agentic Memory (MCP): Built-in Model Context Protocol server for instant integration with Claude, GPT-5, and autonomous agents.
Advanced Visuals: Built-in 3D HNSW Graph Visualizer, RAG Playground, and Embenx Explorer.
Research-Driven Optimizations: Implementation of state-of-the-art algorithms like ClusterKV, TurboQuant (1-bit quantization), and Echo (Temporal Memory).
20+ Vector Backends: Unified support for FAISS, ScaNN, USearch, HNSWLib, Annoy, pgvector, LanceDB, Milvus, Qdrant, Chroma, Weaviate, DuckDB, Vespa, Elasticsearch, OpenSearch, and BM25.
Multimodal Support: Native handling of image embeddings (CLIP) and cross-modal retrieval.
Quick Start¶
Install Embenx:
pip install embenx
Simple semantic search:
from embenx import Collection
import numpy as np
# Initialize a collection with FAISS-HNSW
col = Collection(dimension=768, indexer_type="faiss-hnsw")
# Add data with metadata
vectors = np.random.rand(100, 768).astype('float32')
metadata = [{"id": i, "text": f"Document {i}", "category": "news"} for i in range(100)]
col.add(vectors, metadata)
# Search with metadata filtering
results = col.search(query_vector, top_k=5, where={"category": "news"})
for meta, dist in results:
print(f"Found: {meta['text']} (Distance: {dist:.4f})")