Publish docs for version 1.17 (#2137)

* Cluster Telemetry docs (#2068)

* mention cluster telemetry

* small reword

* Docs for read_fan_out_delay_ms

* Add warning against setting threshold too low

* Small docs change for inference API keys

* Trigger Build

* Add guide with tips for low latency search (#2136)

* Update frontmatter weights

* Add 'Tips for Low-Latency Search' guide

* Review feedback

* Temporarily bump Rust client to v1-17-upgrade branch

* Docs for audit logging (#2141)

* Docs for audit logging

* Consistent title casing

* Review feedback

* Docs for optimization monitoring (#2121)

* Docs for optimization monitoring

* Review feedback

* Optimization monitoring is cluster-wide now

* Upgrade code snippet checker to 1.17

* Fix broken Python snippets

* Relevance Feedback docs (#2060)

* add relevance feedback in Explore page

* Review

* Trigger Build

* Trigger Build

* Create new 'Search Relevance' concept page

* Tweaks

* Update links to moved content

* add rust snippet

* TS anippets

* Clarification about using point IDs

* Add links

* Restructure paragraphs

* docs: Go snippet

Signed-off-by: Anush008 <mail@anush.sh>

* docs: Missed Java snippets with C#

Signed-off-by: Anush008 <mail@anush.sh>

* new: add python snippets

* Make Java and Rust snippets testable

* Remove unnecessary styling

---------

Signed-off-by: Anush008 <mail@anush.sh>
Co-authored-by: Evgeniya Sukhodolskaya <suxodolskaya97@gmail.com>
Co-authored-by: Abdon Pijpelink <abdon.pijpelink@qdrant.com>
Co-authored-by: Ivan Pleshkov <pleshkov.ivan@gmail.com>
Co-authored-by: Anush008 <mail@anush.sh>
Co-authored-by: George Panchuk <george.panchuk@qdrant.tech>

* Docs for enable_hnsw (#2080)

* Move 'Filterable HNSW Index' section under 'Vector Index'

* Add docs for enable_hnsw

* docs: Go snippets

Signed-off-by: Anush008 <mail@anush.sh>

* docs: Java snippets

Signed-off-by: Anush008 <mail@anush.sh>

* docs: C# snippets

Signed-off-by: Anush008 <mail@anush.sh>

* Add Rust snippet

* TS snippets

* new: add python snippets

---------

Signed-off-by: Anush008 <mail@anush.sh>
Co-authored-by: Anush008 <mail@anush.sh>
Co-authored-by: timvisee <tim@visee.me>
Co-authored-by: Ivan Pleshkov <pleshkov.ivan@gmail.com>
Co-authored-by: George Panchuk <george.panchuk@qdrant.tech>

* Docs for list shard keys API (#2082)

* Docs for list shard keys

* docs: Go snippets

Signed-off-by: Anush008 <mail@anush.sh>

* docs: Java snippets

Signed-off-by: Anush008 <mail@anush.sh>

* docs: C# snippets

Signed-off-by: Anush008 <mail@anush.sh>

* Add Rust snippet

* docs: TS snippets

* new: add python snippets

---------

Signed-off-by: Anush008 <mail@anush.sh>
Co-authored-by: Anush008 <mail@anush.sh>
Co-authored-by: timvisee <tim@visee.me>
Co-authored-by: Ivan Pleshkov <pleshkov.ivan@gmail.com>
Co-authored-by: George Panchuk <george.panchuk@qdrant.tech>

* Docs for update_mode (#2097)

* Docs for update_mode

* docs: C#, Go, Java snippets

Signed-off-by: Anush008 <mail@anush.sh>

* doc: Remove _ from C# snippet

Signed-off-by: Anush008 <mail@anush.sh>

* Add Rust snippet

* Fix some snippets

* Review feedback

* ts snippets

* new: add python snippets

* fix: add generated python.md

---------

Signed-off-by: Anush008 <mail@anush.sh>
Co-authored-by: Anush008 <mail@anush.sh>
Co-authored-by: timvisee <tim@visee.me>
Co-authored-by: Ivan Pleshkov <pleshkov.ivan@gmail.com>
Co-authored-by: George Panchuk <george.panchuk@qdrant.tech>

* Docs for weighted RRF (#2132)

* Docs for weighted RRF

* docs: Go, Java, C# snippets

Signed-off-by: Anush008 <mail@anush.sh>

* Add Rust snippet

* Apply suggestions from code review

Co-authored-by: Luis Cossío <luis.cossio@qdrant.com>

* Delete landing_page.sln

* Review feedback

* ts snippets

* new: add python snippets

* Trigger Build

---------

Signed-off-by: Anush008 <mail@anush.sh>
Co-authored-by: Anush008 <mail@anush.sh>
Co-authored-by: timvisee <tim@visee.me>
Co-authored-by: Luis Cossío <luis.cossio@qdrant.com>
Co-authored-by: Ivan Pleshkov <pleshkov.ivan@gmail.com>
Co-authored-by: George Panchuk <george.panchuk@qdrant.tech>

* Clean up Go and Java snippets

* Revert go snippet change; target Go client 1.17.1

* Updated Go snippet

* Trigger Build

* Update Rust lockfile

---------

Signed-off-by: Anush008 <mail@anush.sh>
Co-authored-by: Luis Cossío <luis.cossio@qdrant.com>
Co-authored-by: Daniel Boros <56868953+dancixx@users.noreply.github.com>
Co-authored-by: timvisee <tim@visee.me>
Co-authored-by: Evgeniya Sukhodolskaya <suxodolskaya97@gmail.com>
Co-authored-by: Ivan Pleshkov <pleshkov.ivan@gmail.com>
Co-authored-by: Anush008 <mail@anush.sh>
Co-authored-by: George Panchuk <george.panchuk@qdrant.tech>
This commit is contained in:
Abdon Pijpelink
2026-02-20 10:42:12 +01:00
committed by GitHub
co-authored by Evgeniya Sukhodolskaya Ivan Pleshkov Anush008 George Panchuk timvisee Luis Cossío Daniel Boros
parent 92ff228b79
commit 378837432e
113 changed files with 1942 additions and 256 deletions
@@ -0,0 +1,33 @@
using Qdrant.Client;
using Qdrant.Client.Grpc;
public class Snippet
{
public static async Task Run()
{
var client = new QdrantClient("localhost", 6334); // @hide
await client.QueryAsync(
collectionName: "{collection_name}",
query: new RelevanceFeedbackInput
{
Target = new float[] { 0.2f, 0.1f, 0.9f, 0.7f },
Feedback =
{
new FeedbackItem { Example = 111, Score = 0.68f },
new FeedbackItem { Example = 222, Score = 0.72f },
new FeedbackItem { Example = 33, Score = 0.61f },
},
Strategy =
{
Naive = new()
{
A = 0.12f,
B = 0.43f,
C = 0.16f,
},
},
}
);
}
}
@@ -0,0 +1,27 @@
```csharp
using Qdrant.Client;
using Qdrant.Client.Grpc;
await client.QueryAsync(
collectionName: "{collection_name}",
query: new RelevanceFeedbackInput
{
Target = new float[] { 0.2f, 0.1f, 0.9f, 0.7f },
Feedback =
{
new FeedbackItem { Example = 111, Score = 0.68f },
new FeedbackItem { Example = 222, Score = 0.72f },
new FeedbackItem { Example = 33, Score = 0.61f },
},
Strategy =
{
Naive = new()
{
A = 0.12f,
B = 0.43f,
C = 0.16f,
},
},
}
);
```
@@ -0,0 +1,33 @@
```go
import (
"context"
"github.com/qdrant/go-client/qdrant"
)
client.Query(context.Background(), &qdrant.QueryPoints{
CollectionName: "{collection_name}",
Query: qdrant.NewQueryRelevanceFeedback(
&qdrant.RelevanceFeedbackInput{
Target: qdrant.NewVectorInput(0.01, 0.45, 0.67),
Feedback: []*qdrant.FeedbackItem{
{
Example: qdrant.NewVectorInputID(qdrant.NewIDNum(111)),
Score: 0.68,
},
{
Example: qdrant.NewVectorInputID(qdrant.NewIDNum(222)),
Score: 0.72,
},
{
Example: qdrant.NewVectorInputID(qdrant.NewIDNum(333)),
Score: 0.61,
},
},
Strategy: qdrant.NewFeedbackStrategyNaive(&qdrant.NaiveFeedbackStrategy{
A: 0.12, B: 0.43, C: 0.16,
}),
},
),
})
```
@@ -0,0 +1,48 @@
```java
import static io.qdrant.client.QueryFactory.relevanceFeedback;
import static io.qdrant.client.VectorInputFactory.vectorInput;
import io.qdrant.client.grpc.Points.FeedbackItem;
import io.qdrant.client.grpc.Points.FeedbackStrategy;
import io.qdrant.client.grpc.Points.NaiveFeedbackStrategy;
import io.qdrant.client.grpc.Points.QueryPoints;
import io.qdrant.client.grpc.Points.RelevanceFeedbackInput;
import java.util.List;
client
.queryAsync(
QueryPoints.newBuilder()
.setCollectionName("{collection_name}")
.setQuery(
relevanceFeedback(
RelevanceFeedbackInput.newBuilder()
.setTarget(vectorInput(0.01f, 0.45f, 0.67f))
.addFeedback(
FeedbackItem.newBuilder()
.setExample(vectorInput(111))
.setScore(0.68f)
.build())
.addFeedback(
FeedbackItem.newBuilder()
.setExample(vectorInput(222))
.setScore(0.72f)
.build())
.addFeedback(
FeedbackItem.newBuilder()
.setExample(vectorInput(333))
.setScore(0.61f)
.build())
.setStrategy(
FeedbackStrategy.newBuilder()
.setNaive(
NaiveFeedbackStrategy.newBuilder()
.setA(0.12f)
.setB(0.43f)
.setC(0.16f)
.build())
.build())
.build()))
.build())
.get();
```
@@ -0,0 +1,26 @@
```python
from qdrant_client import QdrantClient, models
client = QdrantClient()
client.query_points(
"{collection_name}",
query=models.RelevanceFeedbackQuery(
relevance_feedback=models.RelevanceFeedbackInput(
target=[0.1, 0.9, 0.23],
feedback=[
models.FeedbackItem(example=111, score=0.68),
models.FeedbackItem(example=222, score=0.72),
models.FeedbackItem(example=333, score=0.61),
],
strategy=models.NaiveFeedbackStrategy(
naive=models.NaiveFeedbackStrategyParams(
a=0.12,
b=0.43,
c=0.03
)
)
)
)
)
```
@@ -0,0 +1,19 @@
```rust
use qdrant_client::qdrant::{
FeedbackItemBuilder, FeedbackStrategyBuilder, PointId, Query, QueryPointsBuilder,
RelevanceFeedbackInputBuilder, VectorInput,
};
use qdrant_client::Qdrant;
let _points = client.query(
QueryPointsBuilder::new("{collection_name}")
.query(Query::new_relevance_feedback(
RelevanceFeedbackInputBuilder::new(vec![0.01, 0.45, 0.67])
.add_feedback(FeedbackItemBuilder::new(VectorInput::new_id(PointId::from(111)), 0.68))
.add_feedback(FeedbackItemBuilder::new(VectorInput::new_id(PointId::from(222)), 0.72))
.add_feedback(FeedbackItemBuilder::new(VectorInput::new_id(PointId::from(333)), 0.61))
.strategy(FeedbackStrategyBuilder::naive(0.12, 0.43, 0.16))
))
.limit(10u64)
).await?;
```
@@ -0,0 +1,25 @@
```typescript
import { QdrantClient } from "@qdrant/js-client-rest";
const client = new QdrantClient({ host: "localhost", port: 6333 });
client.query("{collection_name}", {
query: {
relevance_feedback: {
target: [0.1, 0.9, 0.23],
feedback: [
{ example: 111, score: 0.68 },
{ example: 222, score: 0.72 },
{ example: 333, score: 0.61 },
],
strategy: {
naive: {
a: 0.12,
b: 0.43,
c: 0.03,
},
},
},
},
});
```
@@ -0,0 +1,45 @@
package snippet
import (
"context"
"github.com/qdrant/go-client/qdrant"
)
func Main() {
// @hide-start
client, err := qdrant.NewClient(&qdrant.Config{
Host: "localhost",
Port: 6334,
})
if err != nil {
panic(err)
}
// @hide-end
client.Query(context.Background(), &qdrant.QueryPoints{
CollectionName: "{collection_name}",
Query: qdrant.NewQueryRelevanceFeedback(
&qdrant.RelevanceFeedbackInput{
Target: qdrant.NewVectorInput(0.01, 0.45, 0.67),
Feedback: []*qdrant.FeedbackItem{
{
Example: qdrant.NewVectorInputID(qdrant.NewIDNum(111)),
Score: 0.68,
},
{
Example: qdrant.NewVectorInputID(qdrant.NewIDNum(222)),
Score: 0.72,
},
{
Example: qdrant.NewVectorInputID(qdrant.NewIDNum(333)),
Score: 0.61,
},
},
Strategy: qdrant.NewFeedbackStrategyNaive(&qdrant.NaiveFeedbackStrategy{
A: 0.12, B: 0.43, C: 0.16,
}),
},
),
})
}
@@ -0,0 +1,22 @@
```http
POST /collections/{collection_name}/points/query
{
"query": {
"relevance_feedback: {
"target": [0.1, 0.9, 0.23, ...],
"feedback": [
{ "example": 111, "score": 0.68 },
{ "example": 222, "score": 0.72 },
{ "example": 333, "score": 0.61 }
],
"strategy": {
"naive": {
"a": 0.12,
"b": 0.43,
"c": 0.03
}
}
]
}
}
```
@@ -0,0 +1,57 @@
package com.example.snippets_amalgamation;
import static io.qdrant.client.QueryFactory.relevanceFeedback;
import static io.qdrant.client.VectorInputFactory.vectorInput;
import io.qdrant.client.grpc.Points.FeedbackItem;
import io.qdrant.client.grpc.Points.FeedbackStrategy;
import io.qdrant.client.grpc.Points.NaiveFeedbackStrategy;
import io.qdrant.client.grpc.Points.QueryPoints;
import io.qdrant.client.grpc.Points.RelevanceFeedbackInput;
import java.util.List;
public class Snippet {
public static void run() throws Exception {
// @hide-start
io.qdrant.client.QdrantClient client =
new io.qdrant.client.QdrantClient(io.qdrant.client.QdrantGrpcClient.newBuilder("localhost", 6334, false).build());
// @hide-end
client
.queryAsync(
QueryPoints.newBuilder()
.setCollectionName("{collection_name}")
.setQuery(
relevanceFeedback(
RelevanceFeedbackInput.newBuilder()
.setTarget(vectorInput(0.01f, 0.45f, 0.67f))
.addFeedback(
FeedbackItem.newBuilder()
.setExample(vectorInput(111))
.setScore(0.68f)
.build())
.addFeedback(
FeedbackItem.newBuilder()
.setExample(vectorInput(222))
.setScore(0.72f)
.build())
.addFeedback(
FeedbackItem.newBuilder()
.setExample(vectorInput(333))
.setScore(0.61f)
.build())
.setStrategy(
FeedbackStrategy.newBuilder()
.setNaive(
NaiveFeedbackStrategy.newBuilder()
.setA(0.12f)
.setB(0.43f)
.setC(0.16f)
.build())
.build())
.build()))
.build())
.get();
}
}
@@ -0,0 +1,24 @@
from qdrant_client import QdrantClient, models
client = QdrantClient()
client.query_points(
"{collection_name}",
query=models.RelevanceFeedbackQuery(
relevance_feedback=models.RelevanceFeedbackInput(
target=[0.1, 0.9, 0.23],
feedback=[
models.FeedbackItem(example=111, score=0.68),
models.FeedbackItem(example=222, score=0.72),
models.FeedbackItem(example=333, score=0.61),
],
strategy=models.NaiveFeedbackStrategy(
naive=models.NaiveFeedbackStrategyParams(
a=0.12,
b=0.43,
c=0.03
)
)
)
)
)
@@ -0,0 +1,23 @@
use qdrant_client::qdrant::{
FeedbackItemBuilder, FeedbackStrategyBuilder, PointId, Query, QueryPointsBuilder,
RelevanceFeedbackInputBuilder, VectorInput,
};
use qdrant_client::Qdrant;
pub async fn main() -> anyhow::Result<()> {
let client = qdrant_client::Qdrant::from_url("http://localhost:6334").build()?; // @hide
let _points = client.query(
QueryPointsBuilder::new("{collection_name}")
.query(Query::new_relevance_feedback(
RelevanceFeedbackInputBuilder::new(vec![0.01, 0.45, 0.67])
.add_feedback(FeedbackItemBuilder::new(VectorInput::new_id(PointId::from(111)), 0.68))
.add_feedback(FeedbackItemBuilder::new(VectorInput::new_id(PointId::from(222)), 0.72))
.add_feedback(FeedbackItemBuilder::new(VectorInput::new_id(PointId::from(333)), 0.61))
.strategy(FeedbackStrategyBuilder::naive(0.12, 0.43, 0.16))
))
.limit(10u64)
).await?;
Ok(())
}
@@ -0,0 +1,23 @@
import { QdrantClient } from "@qdrant/js-client-rest";
const client = new QdrantClient({ host: "localhost", port: 6333 });
client.query("{collection_name}", {
query: {
relevance_feedback: {
target: [0.1, 0.9, 0.23],
feedback: [
{ example: 111, score: 0.68 },
{ example: 222, score: 0.72 },
{ example: 333, score: 0.61 },
],
strategy: {
naive: {
a: 0.12,
b: 0.43,
c: 0.03,
},
},
},
},
});