This project has been archived by its maintainers, and is no longer receiving any updates.
crewai-infino
CrewAI integration for Infino — give your agents semantic (vector), full-text (BM25), hybrid, and SQL retrieval as tools over one store on object storage. No second vector DB, no separate metadata store, no client-side fusion: one Infino table answers all four ways, and the agent picks the right one at runtime.
pip install crewai-infino
Agent in minutes
Build and populate a table with InfinoIndex, then hand its tools to an agent:
import infino
from crewai import Agent, Task, Crew
from crewai_infino import InfinoIndex
# Your embedding model — any callables that turn text into vectors.
# (e.g. sentence-transformers; dim must match.)
from my_embeddings import embed_documents, embed_query # -> list[list[float]] / list[float]
conn = infino.connect("./infino-data")
index = InfinoIndex.create(
conn, "kb",
embed_documents=embed_documents, embed_query=embed_query, dim=384,
)
index.add_texts(
["Reset the X200 by holding power for 10s.", "Error E-507 means a stale cache."],
metadatas=[{"product": "X200"}, {"product": "X200"}],
)
analyst = Agent(
role="Support Analyst",
goal="Answer customer questions from the knowledge base",
backstory="You retrieve before you answer.",
tools=index.as_tools(), # semantic + keyword + hybrid + SQL, over one store
)
crew = Crew(agents=[analyst], tasks=[
Task(description="How do I fix error E-507 on the X200?",
expected_output="A concise fix.", agent=analyst),
])
print(crew.kickoff())
The tools
index.as_tools() (or infino_tools(searcher)) returns four crewai.tools.BaseTools:
| Tool | Backed by | Use for |
|---|---|---|
InfinoSemanticSearchTool |
vector kNN | intent / how-to / paraphrased questions |
InfinoKeywordSearchTool |
BM25 (mode="and" default) |
exact codes, SKUs, names, error strings |
InfinoHybridSearchTool |
BM25 + vector fused by RRF, one engine call | strong default — exact and semantic |
InfinoSQLTool |
query_sql |
point lookups, GROUP BY aggregates, joins |
Attach individual tools to different agents, or the whole set to one. The package bundles no embedding model — you pass embed callables, so you keep full control of the model (and the examples stay key-free with a local one).
Knowledge
Use Infino as a CrewAI knowledge backend so a crew auto-grounds its answers —
no explicit tool call. InfinoKnowledgeStorage stores knowledge chunks in one
Infino table and retrieves them by vector similarity:
from crewai import Crew
from crewai.knowledge.source.string_knowledge_source import StringKnowledgeSource
from crewai_infino import InfinoKnowledgeStorage
storage = InfinoKnowledgeStorage(
connection=conn, embed_documents=embed_documents,
embed_query=embed_query, dim=384,
)
source = StringKnowledgeSource(content="Error E-507 means a stale cache.")
crew = Crew(agents=[...], tasks=[...],
knowledge_sources=[source], knowledge_storage=storage)
Lower-level API
InfinoIndex— create / open a table,add_texts,delete,as_tools().InfinoSearcher— the read path:.semantic(),.keyword(),.hybrid(),.sql()returning plain row dicts. The tools are thin wrappers over it.
The table schema matches langchain-infino, so a table built by one adapter is
queryable by the other.
Object storage (S3 / Azure)
Everything runs over any infino.Connection, so local disk and cloud object
storage differ only in the URI and storage_options you pass to
infino.connect — the index, tools, and knowledge backend are unchanged. Keys
are the standard object_store config strings (aws_* / azure_*); ambient
credentials (IAM role, env vars) need no storage_options at all.
# Amazon S3 (or S3-compatible: set aws_endpoint, aws_allow_http for MinIO/R2).
conn = infino.connect("s3://bucket/prefix", storage_options={
"aws_access_key_id": "...",
"aws_secret_access_key": "...",
"aws_region": "us-east-1",
})
# Azure Blob Storage.
conn = infino.connect("az://container/prefix", storage_options={
"azure_storage_account_name": "...",
"azure_storage_account_key": "...",
})
index = InfinoIndex.create(
conn, "kb", embed_documents=embed_documents, embed_query=embed_query, dim=384,
)
Pass validate=True to connect to probe the store at connect time so bad
credentials fail there rather than on first read.
Status
Tools and the Knowledge storage backend (InfinoKnowledgeStorage) are the
shipping surface. CrewAI Memory (durable agent memory) is planned next,
targeting CrewAI's RAGStorage seam. The knowledge backend implements CrewAI's
BaseKnowledgeStorage, which is 1.x-only — hence the crewai>=1.0 floor.
Development
make install # editable install with test + lint extras
make unit # engine-free unit tests
make integration # full suite against the engine
make lint type # ruff + mypy
Apache-2.0.
Metadata
Release files for crewai-infino 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| crewai_infino-0.1.2.tar.gz | 22.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| crewai_infino-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 41.3 kB
Release files / crewai_infino-0.1.2.tar.gz
| Download URL | crewai_infino-0.1.2.tar.gz |
|---|---|
| Size | 22.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d5b3f1b9d177c58431c769209e0fb53e84d8a6169990ec943309514c31393a88
|
|
BLAKE2b-256 checksum How to use checksums |
94f7f805c752fe7c66174df1a06884fb4fc68ea089f4c26458c0f2d10ffd4982
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 1, 2026.
Transparency logRelease files / crewai_infino-0.1.2-py3-none-any.whl
| Download URL | crewai_infino-0.1.2-py3-none-any.whl |
|---|---|
| Size | 19.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
af5816841877196b1f2b4b63b2a4e9c89266f76f8b53bc4bd389eb2238d04352
|
|
BLAKE2b-256 checksum How to use checksums |
f928393b0d759140bb864701b49203f7f10cbcb4eadc3da64477a3b6e03578ef
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 1, 2026.
Transparency log