An extension of fabricatio
Project description
fabricatio-milvus
Milvus vector database integration for Fabricatio — store, search, and retrieve document embeddings with the Fabricatio RAG framework.
Installation
pip install fabricatio[milvus]
Or install all Fabricatio components:
pip install fabricatio[full]
Overview
fabricatio-milvus extends Fabricatio's RAG (Retrieval-Augmented Generation) system with a Milvus vector database backend. It provides:
- Pydantic-based document models that auto-generate Milvus collection schemas from field type annotations.
- A
MilvusRAGcapability class implementing theadd_document/afetch_document/aretrievecontract backed bypymilvus. - Ready-to-use
Actionsubclasses (InjectToDB,MilvusRAGTalk) for building agent pipelines.
Configuration
Milvus settings are loaded from the Fabricatio config system under the milvus namespace:
from fabricatio_milvus.config import milvus_config
# milvus_config.milvus_uri → str | None
# milvus_config.milvus_timeout → float | None
# milvus_config.milvus_token → SecretStr | None
# milvus_config.milvus_dimensions → int | None
These can also be set per-instance via MilvusScopedConfig (pydantic model with the same fields).
Key Components
Models — fabricatio_milvus.models
| Class | Description |
|---|---|
MilvusDataBase[ST] |
Abstract base combining StoredDocumentModel and SearchedDocumentModel. Generates Milvus CollectionSchema from Pydantic fields (int → INT64, str → VARCHAR, float → DOUBLE, list[str] → ARRAY[VARCHAR], JsonValue → JSON). Default index type FLAT, metric type COSINE. |
MilvusClassicModel[SD] |
Minimal concrete model with a single text: str field. |
MilvusScopedConfig |
Per-instance override for Milvus connection parameters (uri, token, timeout, dimensions). |
Capabilities — fabricatio_milvus.capabilities
| Class / Function | Description |
|---|---|
create_client(uri, token, timeout) |
Cached factory returning a pymilvus.MilvusClient. |
AddConfig |
Configuration for add_document: collection_name, flush. |
FetchConfig[D] |
Configuration for afetch_document: document_model, collection_name, similarity_threshold (default 0.37), result_per_query (default 10), tei_endpoint, reranker_threshold, filter_expr. |
MilvusRAG[D, AC, FC] |
Core RAG class backed by Milvus. Inherits from RAG, MilvusScopedConfig, UseEmbedding, UseReranker, UseLLM. |
MilvusRAG methods:
init_client(milvus_uri, milvus_token, milvus_timeout)— initialize the underlyingMilvusClient.check_client(init=True)— ensure client is initialized, optionally initializing from config.add_document(data, config)— vectorize documents and insert into a collection. Creates the collection if it doesn't exist.afetch_document(query, config)— vectorize query strings, search Milvus, deduplicate by ID, sort by distance descending, and deserialize into typed document models.aretrieve(query, document_model, ...)— convenience wrapper that builds aFetchConfigand callsafetch_document.
Actions — fabricatio_milvus.actions
| Action | Description |
|---|---|
InjectToDB |
Action that injects MilvusDataBase instances into a Milvus collection. Automatically creates the collection with the correct schema and index if needed. Supports override_inject to drop and recreate. |
MilvusRAGTalk |
Interactive RAG conversation loop. Queries Milvus with user input, retrieves relevant documents, augments the LLM prompt, and returns generated responses. Runs until the user exits. |
Usage Example
from fabricatio_milvus.actions.rag import InjectToDB
from fabricatio_milvus.models.milvus import MilvusClassicModel
# Create document models
docs = [
MilvusClassicModel(text="Fabricatio is a Python library for building LLM applications."),
MilvusClassicModel(text="Milvus is an open-source vector database."),
]
# Inject into Milvus
action = InjectToDB(
collection_name="my_knowledge_base",
milvus_uri="http://localhost:19530",
)
await action.execute(to_inject=docs)
Dependencies
fabricatio-core— core interfaces, config, and utilitiesfabricatio-rag— RAG abstractions (RAG, document models)pymilvus(≥2.5.4) — Milvus Python SDKpydantic(≥2.7.1) — data validation and schema generationmore-itertools(≥10.8.0) — additional itertools
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 Distributions
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 fabricatio_milvus-0.3.2-py3-none-any.whl.
File metadata
- Download URL: fabricatio_milvus-0.3.2-py3-none-any.whl
- Upload date:
- Size: 11.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
db6e3ebbb30bd2e4d86c6f8e070e3a79e3e75e275d7dbe8bafc18fddddd85dae
|
|
| MD5 |
d1e47748b7eb3ce72aadb943087eb03d
|
|
| BLAKE2b-256 |
527a4d08b62758bd42147da6a8db910e93420a239c5b82236fdac600da127093
|