Skip to content

Commit 747a6b9

Browse files
authored
Merge pull request #243 from jinhonglin-ryan/feature/milvus-vectordb
Feature: Integrate Milvus as a Vector Database Provider
2 parents 42ab601 + c301498 commit 747a6b9

File tree

9 files changed

+575
-17
lines changed

9 files changed

+575
-17
lines changed

.env.template

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ GRAPH_DATABASE_URL=
1414
GRAPH_DATABASE_USERNAME=
1515
GRAPH_DATABASE_PASSWORD=
1616

17-
# "qdrant", "pgvector", "weaviate" or "lancedb"
17+
# "qdrant", "pgvector", "weaviate", "milvus" or "lancedb"
1818
VECTOR_DB_PROVIDER="lancedb"
1919
# Not needed if using "lancedb" or "pgvector"
2020
VECTOR_DB_URL=

.github/workflows/test_milvus.yml

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
name: test | milvus
2+
3+
on:
4+
workflow_dispatch:
5+
pull_request:
6+
branches:
7+
- main
8+
types: [labeled, synchronize]
9+
10+
concurrency:
11+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
12+
cancel-in-progress: true
13+
14+
env:
15+
RUNTIME__LOG_LEVEL: ERROR
16+
ENV: 'dev'
17+
18+
jobs:
19+
get_docs_changes:
20+
name: docs changes
21+
uses: ./.github/workflows/get_docs_changes.yml
22+
23+
run_milvus:
24+
name: test
25+
needs: get_docs_changes
26+
if: needs.get_docs_changes.outputs.changes_outside_docs == 'true' && ${{ github.event.label.name == 'run-checks' }}
27+
runs-on: ubuntu-latest
28+
strategy:
29+
fail-fast: false
30+
defaults:
31+
run:
32+
shell: bash
33+
34+
steps:
35+
- name: Check out
36+
uses: actions/checkout@master
37+
38+
- name: Setup Python
39+
uses: actions/setup-python@v5
40+
with:
41+
python-version: '3.11.x'
42+
43+
- name: Install Poetry
44+
# https://github.com/snok/install-poetry#running-on-windows
45+
uses: snok/[email protected]
46+
with:
47+
virtualenvs-create: true
48+
virtualenvs-in-project: true
49+
installer-parallel: true
50+
51+
- name: Install dependencies
52+
run: poetry install -E milvus --no-interaction
53+
54+
- name: Run default basic pipeline
55+
env:
56+
ENV: 'dev'
57+
LLM_API_KEY: ${{ secrets.OPENAI_API_KEY }}
58+
run: poetry run python ./cognee/tests/test_milvus.py
59+
60+
- name: Clean up disk space
61+
run: |
62+
sudo rm -rf ~/.cache
63+
sudo rm -rf /tmp/*
64+
df -h

README.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,12 @@ pip install 'cognee[qdrant]'
5353
pip install 'cognee[neo4j]'
5454
```
5555

56+
### With pip with Milvus support
57+
58+
```bash
59+
pip install 'cognee[milvus]'
60+
```
61+
5662
### With poetry
5763

5864
```bash
@@ -83,6 +89,12 @@ poetry add cognee -E qdrant
8389
poetry add cognee -E neo4j
8490
```
8591

92+
### With poetry with Milvus support
93+
94+
```bash
95+
poetry add cognee -E milvus
96+
```
97+
8698

8799
## 💻 Basic Usage
88100

cognee/infrastructure/databases/vector/create_vector_engine.py

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
from typing import Dict
22

3+
34
class VectorConfig(Dict):
45
vector_db_url: str
56
vector_db_port: str
67
vector_db_key: str
78
vector_db_provider: str
89

10+
911
def create_vector_engine(config: VectorConfig, embedding_engine):
1012
if config["vector_db_provider"] == "weaviate":
1113
from .weaviate_db import WeaviateAdapter
@@ -16,24 +18,37 @@ def create_vector_engine(config: VectorConfig, embedding_engine):
1618
return WeaviateAdapter(
1719
config["vector_db_url"],
1820
config["vector_db_key"],
19-
embedding_engine = embedding_engine
21+
embedding_engine=embedding_engine
2022
)
2123

2224
elif config["vector_db_provider"] == "qdrant":
2325
if not (config["vector_db_url"] and config["vector_db_key"]):
2426
raise EnvironmentError("Missing requred Qdrant credentials!")
25-
27+
2628
from .qdrant.QDrantAdapter import QDrantAdapter
2729

2830
return QDrantAdapter(
29-
url = config["vector_db_url"],
30-
api_key = config["vector_db_key"],
31-
embedding_engine = embedding_engine
31+
url=config["vector_db_url"],
32+
api_key=config["vector_db_key"],
33+
embedding_engine=embedding_engine
34+
)
35+
36+
elif config['vector_db_provider'] == 'milvus':
37+
from .milvus.MilvusAdapter import MilvusAdapter
38+
39+
if not config["vector_db_url"]:
40+
raise EnvironmentError("Missing required Milvus credentials!")
41+
42+
return MilvusAdapter(
43+
url=config["vector_db_url"],
44+
api_key=config['vector_db_key'],
45+
embedding_engine=embedding_engine
3246
)
3347

48+
3449
elif config["vector_db_provider"] == "pgvector":
3550
from cognee.infrastructure.databases.relational import get_relational_config
36-
51+
3752
# Get configuration for postgres database
3853
relational_config = get_relational_config()
3954
db_username = relational_config.db_username
@@ -52,8 +67,8 @@ def create_vector_engine(config: VectorConfig, embedding_engine):
5267
from .pgvector.PGVectorAdapter import PGVectorAdapter
5368

5469
return PGVectorAdapter(
55-
connection_string,
56-
config["vector_db_key"],
70+
connection_string,
71+
config["vector_db_key"],
5772
embedding_engine,
5873
)
5974

@@ -64,16 +79,16 @@ def create_vector_engine(config: VectorConfig, embedding_engine):
6479
from ..hybrid.falkordb.FalkorDBAdapter import FalkorDBAdapter
6580

6681
return FalkorDBAdapter(
67-
database_url = config["vector_db_url"],
68-
database_port = config["vector_db_port"],
69-
embedding_engine = embedding_engine,
82+
database_url=config["vector_db_url"],
83+
database_port=config["vector_db_port"],
84+
embedding_engine=embedding_engine,
7085
)
7186

7287
else:
7388
from .lancedb.LanceDBAdapter import LanceDBAdapter
7489

7590
return LanceDBAdapter(
76-
url = config["vector_db_url"],
77-
api_key = config["vector_db_key"],
78-
embedding_engine = embedding_engine,
91+
url=config["vector_db_url"],
92+
api_key=config["vector_db_key"],
93+
embedding_engine=embedding_engine,
7994
)

0 commit comments

Comments
 (0)