mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-08-21 01:15:10 +00:00
chore: Enable keyword search for Milvus inline (#3073)
# What does this PR do? With https://github.com/milvus-io/milvus-lite/pull/294 - Milvus Lite supports keyword search using BM25. While introducing keyword search we had explicitly disabled it for inline milvus. This PR removes the need for the check, and enables `inline::milvus` for tests. <!-- If resolving an issue, uncomment and update the line below --> <!-- Closes #[issue-number] --> ## Test Plan Run llama stack with `inline::milvus` enabled: ``` pytest tests/integration/vector_io/test_openai_vector_stores.py::test_openai_vector_store_search_modes --stack-config=http://localhost:8321 --embedding-model=all-MiniLM-L6-v2 -v ``` ``` INFO 2025-08-07 17:06:20,932 tests.integration.conftest:64 tests: Setting DISABLE_CODE_SANDBOX=1 for macOS =========================================================================================== test session starts ============================================================================================ platform darwin -- Python 3.12.11, pytest-7.4.4, pluggy-1.5.0 -- /Users/vnarsing/miniconda3/envs/stack-client/bin/python cachedir: .pytest_cache metadata: {'Python': '3.12.11', 'Platform': 'macOS-14.7.6-arm64-arm-64bit', 'Packages': {'pytest': '7.4.4', 'pluggy': '1.5.0'}, 'Plugins': {'asyncio': '0.23.8', 'cov': '6.0.0', 'timeout': '2.2.0', 'socket': '0.7.0', 'html': '3.1.1', 'langsmith': '0.3.39', 'anyio': '4.8.0', 'metadata': '3.0.0'}} rootdir: /Users/vnarsing/go/src/github/meta-llama/llama-stack configfile: pyproject.toml plugins: asyncio-0.23.8, cov-6.0.0, timeout-2.2.0, socket-0.7.0, html-3.1.1, langsmith-0.3.39, anyio-4.8.0, metadata-3.0.0 asyncio: mode=Mode.AUTO collected 3 items tests/integration/vector_io/test_openai_vector_stores.py::test_openai_vector_store_search_modes[None-None-all-MiniLM-L6-v2-None-384-vector] PASSED [ 33%] tests/integration/vector_io/test_openai_vector_stores.py::test_openai_vector_store_search_modes[None-None-all-MiniLM-L6-v2-None-384-keyword] PASSED [ 66%] tests/integration/vector_io/test_openai_vector_stores.py::test_openai_vector_store_search_modes[None-None-all-MiniLM-L6-v2-None-384-hybrid] PASSED [100%] ============================================================================================ 3 passed in 4.75s ============================================================================================= ``` Signed-off-by: Varsha Prasad Narsing <varshaprasad96@gmail.com> Co-authored-by: Francisco Arceo <arceofrancisco@gmail.com>
This commit is contained in:
parent
eb07a0f86a
commit
8cc4925f7d
4 changed files with 8 additions and 10 deletions
|
@ -413,15 +413,6 @@ class MilvusVectorIOAdapter(OpenAIVectorStoreMixin, VectorIO, VectorDBsProtocolP
|
||||||
index = await self._get_and_cache_vector_db_index(vector_db_id)
|
index = await self._get_and_cache_vector_db_index(vector_db_id)
|
||||||
if not index:
|
if not index:
|
||||||
raise VectorStoreNotFoundError(vector_db_id)
|
raise VectorStoreNotFoundError(vector_db_id)
|
||||||
|
|
||||||
if params and params.get("mode") == "keyword":
|
|
||||||
# Check if this is inline Milvus (Milvus-Lite)
|
|
||||||
if hasattr(self.config, "db_path"):
|
|
||||||
raise NotImplementedError(
|
|
||||||
"Keyword search is not supported in Milvus-Lite. "
|
|
||||||
"Please use a remote Milvus server for keyword search functionality."
|
|
||||||
)
|
|
||||||
|
|
||||||
return await index.query_chunks(query, params)
|
return await index.query_chunks(query, params)
|
||||||
|
|
||||||
async def delete_chunks(self, store_id: str, chunks_for_deletion: list[ChunkForDeletion]) -> None:
|
async def delete_chunks(self, store_id: str, chunks_for_deletion: list[ChunkForDeletion]) -> None:
|
||||||
|
|
|
@ -93,6 +93,7 @@ unit = [
|
||||||
"blobfile",
|
"blobfile",
|
||||||
"faiss-cpu",
|
"faiss-cpu",
|
||||||
"pymilvus>=2.5.12",
|
"pymilvus>=2.5.12",
|
||||||
|
"milvus-lite>=2.5.0",
|
||||||
"litellm",
|
"litellm",
|
||||||
"together",
|
"together",
|
||||||
"coverage",
|
"coverage",
|
||||||
|
@ -118,6 +119,7 @@ test = [
|
||||||
"sqlalchemy[asyncio]>=2.0.41",
|
"sqlalchemy[asyncio]>=2.0.41",
|
||||||
"requests",
|
"requests",
|
||||||
"pymilvus>=2.5.12",
|
"pymilvus>=2.5.12",
|
||||||
|
"milvus-lite>=2.5.0",
|
||||||
"weaviate-client>=4.16.4",
|
"weaviate-client>=4.16.4",
|
||||||
]
|
]
|
||||||
docs = [
|
docs = [
|
||||||
|
|
|
@ -56,6 +56,7 @@ def skip_if_provider_doesnt_support_openai_vector_stores_search(client_with_mode
|
||||||
"keyword": [
|
"keyword": [
|
||||||
"inline::sqlite-vec",
|
"inline::sqlite-vec",
|
||||||
"remote::milvus",
|
"remote::milvus",
|
||||||
|
"inline::milvus",
|
||||||
],
|
],
|
||||||
"hybrid": [
|
"hybrid": [
|
||||||
"inline::sqlite-vec",
|
"inline::sqlite-vec",
|
||||||
|
|
6
uv.lock
generated
6
uv.lock
generated
|
@ -1,5 +1,5 @@
|
||||||
version = 1
|
version = 1
|
||||||
revision = 3
|
revision = 2
|
||||||
requires-python = ">=3.12"
|
requires-python = ">=3.12"
|
||||||
resolution-markers = [
|
resolution-markers = [
|
||||||
"(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')",
|
"(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')",
|
||||||
|
@ -1809,6 +1809,7 @@ test = [
|
||||||
{ name = "chardet" },
|
{ name = "chardet" },
|
||||||
{ name = "datasets" },
|
{ name = "datasets" },
|
||||||
{ name = "mcp" },
|
{ name = "mcp" },
|
||||||
|
{ name = "milvus-lite" },
|
||||||
{ name = "openai" },
|
{ name = "openai" },
|
||||||
{ name = "pymilvus" },
|
{ name = "pymilvus" },
|
||||||
{ name = "pypdf" },
|
{ name = "pypdf" },
|
||||||
|
@ -1831,6 +1832,7 @@ unit = [
|
||||||
{ name = "faiss-cpu" },
|
{ name = "faiss-cpu" },
|
||||||
{ name = "litellm" },
|
{ name = "litellm" },
|
||||||
{ name = "mcp" },
|
{ name = "mcp" },
|
||||||
|
{ name = "milvus-lite" },
|
||||||
{ name = "ollama" },
|
{ name = "ollama" },
|
||||||
{ name = "openai" },
|
{ name = "openai" },
|
||||||
{ name = "pymilvus" },
|
{ name = "pymilvus" },
|
||||||
|
@ -1925,6 +1927,7 @@ test = [
|
||||||
{ name = "chardet" },
|
{ name = "chardet" },
|
||||||
{ name = "datasets" },
|
{ name = "datasets" },
|
||||||
{ name = "mcp" },
|
{ name = "mcp" },
|
||||||
|
{ name = "milvus-lite", specifier = ">=2.5.0" },
|
||||||
{ name = "openai" },
|
{ name = "openai" },
|
||||||
{ name = "pymilvus", specifier = ">=2.5.12" },
|
{ name = "pymilvus", specifier = ">=2.5.12" },
|
||||||
{ name = "pypdf" },
|
{ name = "pypdf" },
|
||||||
|
@ -1946,6 +1949,7 @@ unit = [
|
||||||
{ name = "faiss-cpu" },
|
{ name = "faiss-cpu" },
|
||||||
{ name = "litellm" },
|
{ name = "litellm" },
|
||||||
{ name = "mcp" },
|
{ name = "mcp" },
|
||||||
|
{ name = "milvus-lite", specifier = ">=2.5.0" },
|
||||||
{ name = "ollama" },
|
{ name = "ollama" },
|
||||||
{ name = "openai" },
|
{ name = "openai" },
|
||||||
{ name = "pymilvus", specifier = ">=2.5.12" },
|
{ name = "pymilvus", specifier = ">=2.5.12" },
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue