Embrix for Python
Embrix is a local-first AI application toolkit for Python.
It brings together the pieces you usually need for practical AI workflows in one package:
- vector storage and semantic search
- stateful workflow orchestration
- tool-using agents
- retrieval-augmented generation (RAG)
- database vectorization and natural-language querying
- an optional REST API for local services
By default, Embrix works locally with SQLite and a bring-your-own-model approach.
Install from PyPI
Core package:
pip install embrix
Useful extras:
pip install "embrix[openai]"
pip install "embrix[sentence]"
pip install "embrix[all]"
What the Python package includes
| Component | Purpose |
|---|---|
VectorStore |
Store vectors and run similarity search |
StateGraph |
Build multi-step workflows with state transitions |
Agent |
Run tool-using agents with your chosen model |
RAGPipeline |
Ingest documents, retrieve context, and answer questions |
DBVectorizer + DBQueryEngine |
Turn database rows into searchable context and query them in plain language |
Quick start
Vector search
from embrix import VectorStore
store = VectorStore()
store.upsert(
"docs",
[
{
"_id": "intro",
"values": [0.1, 0.2, 0.3],
"text": "Embrix runs local AI workflows with simple building blocks.",
"metadata": {"topic": "overview"},
}
],
)
results = store.query("docs", [0.1, 0.2, 0.3], top_k=1)
print(results)
store.close()
Stateful workflow
from embrix import END, START, StateGraph
def retrieve(state):
return {"context": f"facts for: {state['question']}"}
def respond(state):
return {"answer": f"Answer from {state['context']}"}
graph = StateGraph()
graph.add_node("retrieve", retrieve)
graph.add_node("respond", respond)
graph.add_edge(START, "retrieve")
graph.add_edge("retrieve", "respond")
graph.add_edge("respond", END)
result = graph.compile().invoke({"question": "What is retrieval?"})
print(result["answer"])
Agent with your own provider
from embrix import Agent, OpenAICompatibleChatModel
from embrix.agents import Tool
def calculator(expression: str) -> str:
return str(eval(expression, {"__builtins__": {}}, {}))
agent = Agent(
tools=[Tool("calculator", "Evaluate arithmetic expressions", calculator)],
llm=OpenAICompatibleChatModel(
model="gpt-4o-mini",
api_key="your-api-key",
),
)
print(agent.run("Use the calculator tool to compute 12 * 9."))
RAG pipeline
from embrix import RAGPipeline
from embrix.embeddings import SentenceEmbedder
from embrix.llms import OllamaChatModel
pipeline = RAGPipeline(
embedder=SentenceEmbedder(),
llm=OllamaChatModel(model="llama3.1"),
)
pipeline.ingest([
"Embrix supports retrieval, workflows, agents, and database tools."
], namespace="docs")
print(pipeline.query("What does Embrix support?", namespace="docs"))
Database search and question answering
from embrix import DBQueryEngine, DBVectorizer, VectorStore
from embrix.db import connect as db_connect
connector = db_connect("sqlite", db_path="products.db")
vectorizer = DBVectorizer(connector, embedder, store=VectorStore(backend="memory", dimension=embedder.dimension))
vectorizer.vectorize_table("products", namespace="products", text_columns=["name", "description"])
engine = DBQueryEngine(vectorizer=vectorizer, llm=chat_model, connector=connector)
hits = engine.search("budget running shoes", namespace="products")
rows = engine.sql_query("Show products under 100 dollars", table="products")
Model provider approach
Embrix does not bundle a hosted model service.
You plug in your own provider, key, gateway, or local runtime.
Built-in chat adapters include:
OpenAICompatibleChatModelAnthropicChatModelGeminiChatModelOllamaChatModelCustomChatModel
That means the same app structure can work with hosted APIs, internal gateways, or local model runtimes.
REST API
Start the API server locally:
uvicorn embrix.api.server:app --reload --port 8080
Main endpoints:
POST /vectors/upsertPOST /vectors/queryPOST /vectors/fetchPOST /vectors/deleteGET /vectors/listGET /describe_index_statsGET /namespacesGET /health
Package layout
embrix/
├── agents/
├── api/
├── db/
├── embeddings/
├── graph/
├── llms/
├── rag/
└── vector/
Common use cases
- local AI prototypes
- notebook experiments
- backend services that need retrieval or agent steps
- document Q&A
- database exploration with semantic search
- lightweight internal AI tools
License
MIT
Metadata
Release files for embrix 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| embrix-0.2.1.tar.gz | 86.4 kB | Without provenance | Details for embrix-0.2.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| embrix-0.2.1-py3-none-any.whl | Python 3 | none | any | Details for embrix-0.2.1-py3-none-any.whl |
Total release size: 195.3 kB
Release files / embrix-0.2.1.tar.gz
| Download URL | embrix-0.2.1.tar.gz |
|---|---|
| Size | 86.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
90d9f59278ad12910b41d5d0332c18ac522218c630d663f66e966df9c67bb9d8
|
|
BLAKE2b-256 checksum How to use checksums |
7f23f08947a623319f668139ae80330d61a1a913eb7add8ba47befb74ea4638f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Release files / embrix-0.2.1-py3-none-any.whl
| Download URL | embrix-0.2.1-py3-none-any.whl |
|---|---|
| Size | 108.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6dbf6a31ac3c1284f3e8207debb9452b3a3d5a4d11d7b7b1d5329204240aa6eb
|
|
BLAKE2b-256 checksum How to use checksums |
217fb4a3aa63fc1d6c35b24b51e418ff15c747864a93eca2316061a12521b120
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Security for embrix 0.2.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.