mirror of
https://github.com/langchain-ai/langchain-milvus.git
synced 2026-07-01 19:54:58 -04:00
[PR #33] [MERGED] feat: support bm25 milvus function #56
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/langchain-ai/langchain-milvus/pull/33
Author: @zc277584121
Created: 1/3/2025
Status: ✅ Merged
Merged: 1/10/2025
Merged by: @zc277584121
Base:
main← Head:main📝 Commits (4)
8845a95feat: support bm25 milvus function2b421bafix ci15d4340refine name of built-in function attributecf0f476final refinement for BM25 builtin function📊 Changes
9 files changed (+883 additions, -384 deletions)
View changed files
📝
libs/milvus/langchain_milvus/__init__.py(+6 -0)➕
libs/milvus/langchain_milvus/function.py(+74 -0)➕
libs/milvus/langchain_milvus/utils/constant.py(+4 -0)📝
libs/milvus/langchain_milvus/vectorstores/milvus.py(+679 -236)📝
libs/milvus/langchain_milvus/vectorstores/zilliz.py(+3 -75)📝
libs/milvus/poetry.lock(+7 -48)📝
libs/milvus/pyproject.toml(+1 -1)📝
libs/milvus/tests/integration_tests/vectorstores/test_milvus.py(+107 -24)📝
libs/milvus/tests/unit_tests/test_imports.py(+2 -0)📄 Description
This PR introduced some major refactors:
BaseMilvusBuiltInFunction, which is a light wrapper of Milvus Function.Bm25BuiltInFunctionextended fromBaseMilvusBuiltInFunction, which includes the MilvusFunctionType.BM25settings and the configs of Milvus analyzer. We can use thisBm25BuiltInFunctionto implement Full text search in MilvusFunctionType.TEXTEMBEDDINGexample). So in the future we can implement more subclass fromBaseMilvusBuiltInFunctionto support the text-in functions in Milvus.test_builtin_bm25_function(). Simply speaking, we can pass in any customized Langchain embedding functions or milvus built-in functions to the Milvus class initialization function to build multi index fields in Milvus.Some use case examples will be like these:
or with multi embedding fields and bm25 function:
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.