Skip to content

Commit f93b5eb

Browse files
committed
Add detailed documentation for MilvusSearchRequest usage
Introduced sections explaining MilvusSearchRequest's parameters, `nativeExpression`, and `searchParamsJson`, with examples for enhanced clarity. This update provides guidance on leveraging Milvus-specific features for precise filtering and optimal search performance. Signed-off-by: waileong <[email protected]>
1 parent 2df3f3f commit f93b5eb

File tree

1 file changed

+52
-0
lines changed
  • spring-ai-docs/src/main/antora/modules/ROOT/pages/api/vectordbs

1 file changed

+52
-0
lines changed

spring-ai-docs/src/main/antora/modules/ROOT/pages/api/vectordbs/milvus.adoc

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,58 @@ vectorStore.similaritySearch(SearchRequest.builder()
161161

162162
NOTE: These filter expressions are converted into the equivalent Milvus filters.
163163

164+
== Using MilvusSearchRequest
165+
166+
MilvusSearchRequest extends SearchRequest, allowing you to use Milvus-specific search parameters such as native expressions and search parameter JSON.
167+
168+
[source,java]
169+
----
170+
MilvusSearchRequest request = MilvusSearchRequest.milvusBuilder()
171+
.query("sample query")
172+
.topK(5)
173+
.similarityThreshold(0.7)
174+
.nativeExpression("metadata[\"age\"] > 30") // Overrides filterExpression if both are set
175+
.filterExpression("age <= 30") // Ignored if nativeExpression is set
176+
.searchParamsJson("{\"nprobe\":128}")
177+
.build();
178+
List results = vectorStore.similaritySearch(request);
179+
----
180+
This allows greater flexibility when using Milvus-specific search features.
181+
182+
== Importance of `nativeExpression` and `searchParamsJson` in `MilvusSearchRequest`
183+
184+
These two parameters enhance Milvus search precision and ensure optimal query performance:
185+
186+
*nativeExpression*: Enables additional filtering capabilities using Milvus' native filtering expressions.
187+
https://milvus.io/docs/boolean.md[Milvus Filtering]
188+
189+
Example:
190+
[source,java]
191+
----
192+
MilvusSearchRequest request = MilvusSearchRequest.milvusBuilder()
193+
.query("sample query")
194+
.topK(5)
195+
.nativeExpression("metadata['category'] == 'science'")
196+
.build();
197+
----
198+
199+
*searchParamsJson*: Essential for tuning search behavior when using IVF_FLAT, Milvus' default index.
200+
https://milvus.io/docs/index.md?tab=floating[Milvus Vector Index]
201+
202+
By default, `IVF_FLAT` requires `nprobe` to be set for accurate results. If not specified, `nprobe` defaults to `1`, which can lead to poor recall or even zero search results.
203+
204+
Example:
205+
[source,java]
206+
----
207+
MilvusSearchRequest request = MilvusSearchRequest.milvusBuilder()
208+
.query("sample query")
209+
.topK(5)
210+
.searchParamsJson("{\"nprobe\":128}")
211+
.build();
212+
----
213+
214+
Using `nativeExpression` ensures advanced filtering, while `searchParamsJson` prevents ineffective searches caused by a low default `nprobe` value.
215+
164216
[[milvus-properties]]
165217
== Milvus VectorStore properties
166218

0 commit comments

Comments
 (0)