mirror of
https://github.com/qdrant/landing_page.git
synced 2026-10-08 20:38:31 +02:00
upload snippets
This commit is contained in:
+1
@@ -0,0 +1 @@
|
||||
This code snippet shows the canonical pattern for combining hybrid search fusion with business-logic ranking. The inner prefetch fuses sparse and dense results with RRF, then the outer `FormulaQuery` applies exponential decay on a `published_at` payload field to boost recent documents. Use this pattern any time you want fusion plus recency, popularity, geo decay, or category-conditional multipliers, rather than trying to encode those signals as fusion weights.
|
||||
+53
@@ -0,0 +1,53 @@
|
||||
using Qdrant.Client;
|
||||
using Qdrant.Client.Grpc;
|
||||
|
||||
public class Snippet
|
||||
{
|
||||
public static async Task Run()
|
||||
{
|
||||
var client = new QdrantClient("localhost", 6334);
|
||||
|
||||
await client.QueryAsync(
|
||||
collectionName: "{collection_name}",
|
||||
prefetch:
|
||||
[
|
||||
new PrefetchQuery {
|
||||
Prefetch = {
|
||||
new PrefetchQuery {
|
||||
Query = new(float, uint)[] { (0.22f, 1), (0.8f, 42) },
|
||||
Using = "sparse",
|
||||
Limit = 100
|
||||
},
|
||||
new PrefetchQuery {
|
||||
Query = new float[] { 0.01f, 0.45f, 0.67f },
|
||||
Using = "dense",
|
||||
Limit = 100
|
||||
},
|
||||
},
|
||||
Query = Fusion.Rrf,
|
||||
Limit = 100
|
||||
},
|
||||
],
|
||||
query: new Formula
|
||||
{
|
||||
Expression = new SumExpression
|
||||
{
|
||||
Sum =
|
||||
{
|
||||
"$score", // the fused score from the RRF prefetch
|
||||
Expression.FromExpDecay(
|
||||
new()
|
||||
{
|
||||
X = Expression.FromDateTimeKey("published_at"),
|
||||
Target = Expression.FromDateTime("YYYY-MM-DDT00:00:00Z"),
|
||||
Scale = 86400 * 180, // 180 days in seconds
|
||||
Midpoint = 0.5f
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
},
|
||||
limit: 10
|
||||
);
|
||||
}
|
||||
}
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
```csharp
|
||||
using Qdrant.Client;
|
||||
using Qdrant.Client.Grpc;
|
||||
|
||||
var client = new QdrantClient("localhost", 6334);
|
||||
|
||||
await client.QueryAsync(
|
||||
collectionName: "{collection_name}",
|
||||
prefetch:
|
||||
[
|
||||
new PrefetchQuery {
|
||||
Prefetch = {
|
||||
new PrefetchQuery {
|
||||
Query = new(float, uint)[] { (0.22f, 1), (0.8f, 42) },
|
||||
Using = "sparse",
|
||||
Limit = 100
|
||||
},
|
||||
new PrefetchQuery {
|
||||
Query = new float[] { 0.01f, 0.45f, 0.67f },
|
||||
Using = "dense",
|
||||
Limit = 100
|
||||
},
|
||||
},
|
||||
Query = Fusion.Rrf,
|
||||
Limit = 100
|
||||
},
|
||||
],
|
||||
query: new Formula
|
||||
{
|
||||
Expression = new SumExpression
|
||||
{
|
||||
Sum =
|
||||
{
|
||||
"$score", // the fused score from the RRF prefetch
|
||||
Expression.FromExpDecay(
|
||||
new()
|
||||
{
|
||||
X = Expression.FromDateTimeKey("published_at"),
|
||||
Target = Expression.FromDateTime("YYYY-MM-DDT00:00:00Z"),
|
||||
Scale = 86400 * 180, // 180 days in seconds
|
||||
Midpoint = 0.5f
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
},
|
||||
limit: 10
|
||||
);
|
||||
```
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
```go
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/qdrant/go-client/qdrant"
|
||||
)
|
||||
|
||||
client, err := qdrant.NewClient(&qdrant.Config{
|
||||
Host: "localhost",
|
||||
Port: 6334,
|
||||
})
|
||||
|
||||
client.Query(context.Background(), &qdrant.QueryPoints{
|
||||
CollectionName: "{collection_name}",
|
||||
Prefetch: []*qdrant.PrefetchQuery{
|
||||
{
|
||||
Prefetch: []*qdrant.PrefetchQuery{
|
||||
{
|
||||
Query: qdrant.NewQuerySparse([]uint32{1, 42}, []float32{0.22, 0.8}),
|
||||
Using: qdrant.PtrOf("sparse"),
|
||||
Limit: qdrant.PtrOf(uint64(100)),
|
||||
},
|
||||
{
|
||||
Query: qdrant.NewQueryDense([]float32{0.01, 0.45, 0.67}),
|
||||
Using: qdrant.PtrOf("dense"),
|
||||
Limit: qdrant.PtrOf(uint64(100)),
|
||||
},
|
||||
},
|
||||
Query: qdrant.NewQueryFusion(qdrant.Fusion_RRF),
|
||||
Limit: qdrant.PtrOf(uint64(100)),
|
||||
},
|
||||
},
|
||||
Query: qdrant.NewQueryFormula(&qdrant.Formula{
|
||||
Expression: qdrant.NewExpressionSum(&qdrant.SumExpression{
|
||||
Sum: []*qdrant.Expression{
|
||||
qdrant.NewExpressionVariable("$score"), // the fused score from the RRF prefetch
|
||||
qdrant.NewExpressionExpDecay(&qdrant.DecayParamsExpression{
|
||||
X: qdrant.NewExpressionDatetimeKey("published_at"),
|
||||
Target: qdrant.NewExpressionDatetime("YYYY-MM-DDT00:00:00Z"),
|
||||
Scale: qdrant.PtrOf(float32(86400 * 180)), // 180 days in seconds
|
||||
Midpoint: qdrant.PtrOf(float32(0.5)),
|
||||
}),
|
||||
},
|
||||
}),
|
||||
}),
|
||||
Limit: qdrant.PtrOf(uint64(10)),
|
||||
})
|
||||
```
|
||||
+65
@@ -0,0 +1,65 @@
|
||||
```java
|
||||
import static io.qdrant.client.ExpressionFactory.datetime;
|
||||
import static io.qdrant.client.ExpressionFactory.datetimeKey;
|
||||
import static io.qdrant.client.ExpressionFactory.expDecay;
|
||||
import static io.qdrant.client.ExpressionFactory.sum;
|
||||
import static io.qdrant.client.ExpressionFactory.variable;
|
||||
import static io.qdrant.client.QueryFactory.formula;
|
||||
import static io.qdrant.client.QueryFactory.fusion;
|
||||
import static io.qdrant.client.QueryFactory.nearest;
|
||||
|
||||
import io.qdrant.client.QdrantClient;
|
||||
import io.qdrant.client.QdrantGrpcClient;
|
||||
import io.qdrant.client.grpc.Points.DecayParamsExpression;
|
||||
import io.qdrant.client.grpc.Points.Formula;
|
||||
import io.qdrant.client.grpc.Points.Fusion;
|
||||
import io.qdrant.client.grpc.Points.PrefetchQuery;
|
||||
import io.qdrant.client.grpc.Points.QueryPoints;
|
||||
import io.qdrant.client.grpc.Points.SumExpression;
|
||||
import java.util.List;
|
||||
|
||||
QdrantClient client =
|
||||
new QdrantClient(QdrantGrpcClient.newBuilder("localhost", 6334, false).build());
|
||||
|
||||
client.queryAsync(
|
||||
QueryPoints.newBuilder()
|
||||
.setCollectionName("{collection_name}")
|
||||
.addPrefetch(
|
||||
PrefetchQuery.newBuilder()
|
||||
.addPrefetch(
|
||||
PrefetchQuery.newBuilder()
|
||||
.setQuery(nearest(List.of(0.22f, 0.8f), List.of(1, 42)))
|
||||
.setUsing("sparse")
|
||||
.setLimit(100)
|
||||
.build())
|
||||
.addPrefetch(
|
||||
PrefetchQuery.newBuilder()
|
||||
.setQuery(nearest(List.of(0.01f, 0.45f, 0.67f)))
|
||||
.setUsing("dense")
|
||||
.setLimit(100)
|
||||
.build())
|
||||
.setQuery(fusion(Fusion.RRF))
|
||||
.setLimit(100)
|
||||
.build())
|
||||
.setQuery(
|
||||
formula(
|
||||
Formula.newBuilder()
|
||||
.setExpression(
|
||||
sum(
|
||||
SumExpression.newBuilder()
|
||||
.addSum(variable("$score"))
|
||||
.addSum(
|
||||
expDecay(
|
||||
DecayParamsExpression.newBuilder()
|
||||
.setX(datetimeKey("published_at"))
|
||||
.setTarget(
|
||||
datetime("YYYY-MM-DDT00:00:00Z"))
|
||||
.setScale(86400 * 180)
|
||||
.setMidpoint(0.5f)
|
||||
.build()))
|
||||
.build()))
|
||||
.build()))
|
||||
.setLimit(10)
|
||||
.build())
|
||||
.get();
|
||||
```
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
```python
|
||||
from qdrant_client import QdrantClient, models
|
||||
|
||||
client = QdrantClient(url="http://localhost:6333")
|
||||
|
||||
client.query_points(
|
||||
collection_name="{collection_name}",
|
||||
prefetch=models.Prefetch(
|
||||
prefetch=[
|
||||
models.Prefetch(
|
||||
query=models.SparseVector(indices=[1, 42], values=[0.22, 0.8]),
|
||||
using="sparse",
|
||||
limit=100,
|
||||
),
|
||||
models.Prefetch(
|
||||
query=[0.01, 0.45, 0.67], # <-- dense vector
|
||||
using="dense",
|
||||
limit=100,
|
||||
),
|
||||
],
|
||||
query=models.FusionQuery(fusion=models.Fusion.RRF),
|
||||
limit=100,
|
||||
),
|
||||
query=models.FormulaQuery(
|
||||
formula=models.SumExpression(
|
||||
sum=[
|
||||
"$score", # the fused score from the RRF prefetch
|
||||
models.ExpDecayExpression(
|
||||
exp_decay=models.DecayParamsExpression(
|
||||
x=models.DatetimeKeyExpression(datetime_key="published_at"),
|
||||
target=models.DatetimeExpression(datetime="YYYY-MM-DDT00:00:00Z"),
|
||||
scale=86400 * 180, # 180 days in seconds
|
||||
midpoint=0.5,
|
||||
)
|
||||
),
|
||||
]
|
||||
)
|
||||
),
|
||||
limit=10,
|
||||
)
|
||||
```
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
```rust
|
||||
use qdrant_client::Qdrant;
|
||||
use qdrant_client::qdrant::{
|
||||
DecayParamsExpressionBuilder, Expression, FormulaBuilder, Fusion, PrefetchQueryBuilder, Query,
|
||||
QueryPointsBuilder,
|
||||
};
|
||||
|
||||
let client = Qdrant::from_url("http://localhost:6334").build()?;
|
||||
|
||||
client.query(
|
||||
QueryPointsBuilder::new("{collection_name}")
|
||||
.add_prefetch(
|
||||
PrefetchQueryBuilder::default()
|
||||
.add_prefetch(
|
||||
PrefetchQueryBuilder::default()
|
||||
.query(Query::new_nearest([(1, 0.22), (42, 0.8)].as_slice()))
|
||||
.using("sparse")
|
||||
.limit(100u64),
|
||||
)
|
||||
.add_prefetch(
|
||||
PrefetchQueryBuilder::default()
|
||||
.query(Query::new_nearest(vec![0.01, 0.45, 0.67]))
|
||||
.using("dense")
|
||||
.limit(100u64),
|
||||
)
|
||||
.query(Query::new_fusion(Fusion::Rrf))
|
||||
.limit(100u64),
|
||||
)
|
||||
.query(
|
||||
FormulaBuilder::new(Expression::sum_with([
|
||||
Expression::score(),
|
||||
Expression::exp_decay(
|
||||
DecayParamsExpressionBuilder::new(Expression::datetime_key("published_at"))
|
||||
.target(Expression::datetime("YYYY-MM-DDT00:00:00Z"))
|
||||
.scale(86400.0 * 180.0)
|
||||
.midpoint(0.5),
|
||||
),
|
||||
])),
|
||||
)
|
||||
.limit(10u64),
|
||||
)
|
||||
.await?;
|
||||
```
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
```typescript
|
||||
import { QdrantClient } from "@qdrant/js-client-rest";
|
||||
|
||||
const client = new QdrantClient({ host: "localhost", port: 6333 });
|
||||
|
||||
await client.query("{collection_name}", {
|
||||
prefetch: {
|
||||
prefetch: [
|
||||
{
|
||||
query: {
|
||||
values: [0.22, 0.8],
|
||||
indices: [1, 42],
|
||||
},
|
||||
using: "sparse",
|
||||
limit: 100,
|
||||
},
|
||||
{
|
||||
query: [0.01, 0.45, 0.67], // <-- dense vector
|
||||
using: "dense",
|
||||
limit: 100,
|
||||
},
|
||||
],
|
||||
query: { fusion: "rrf" },
|
||||
limit: 100,
|
||||
},
|
||||
query: {
|
||||
formula: {
|
||||
sum: [
|
||||
"$score", // the fused score from the RRF prefetch
|
||||
{
|
||||
exp_decay: {
|
||||
x: { datetime_key: "published_at" },
|
||||
target: { datetime: "YYYY-MM-DDT00:00:00Z" },
|
||||
scale: 86400 * 180, // 180 days in seconds
|
||||
midpoint: 0.5,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
limit: 10,
|
||||
});
|
||||
```
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
package snippet
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/qdrant/go-client/qdrant"
|
||||
)
|
||||
|
||||
func Main() {
|
||||
client, err := qdrant.NewClient(&qdrant.Config{
|
||||
Host: "localhost",
|
||||
Port: 6334,
|
||||
})
|
||||
|
||||
if err != nil { panic(err) } // @hide
|
||||
|
||||
client.Query(context.Background(), &qdrant.QueryPoints{
|
||||
CollectionName: "{collection_name}",
|
||||
Prefetch: []*qdrant.PrefetchQuery{
|
||||
{
|
||||
Prefetch: []*qdrant.PrefetchQuery{
|
||||
{
|
||||
Query: qdrant.NewQuerySparse([]uint32{1, 42}, []float32{0.22, 0.8}),
|
||||
Using: qdrant.PtrOf("sparse"),
|
||||
Limit: qdrant.PtrOf(uint64(100)),
|
||||
},
|
||||
{
|
||||
Query: qdrant.NewQueryDense([]float32{0.01, 0.45, 0.67}),
|
||||
Using: qdrant.PtrOf("dense"),
|
||||
Limit: qdrant.PtrOf(uint64(100)),
|
||||
},
|
||||
},
|
||||
Query: qdrant.NewQueryFusion(qdrant.Fusion_RRF),
|
||||
Limit: qdrant.PtrOf(uint64(100)),
|
||||
},
|
||||
},
|
||||
Query: qdrant.NewQueryFormula(&qdrant.Formula{
|
||||
Expression: qdrant.NewExpressionSum(&qdrant.SumExpression{
|
||||
Sum: []*qdrant.Expression{
|
||||
qdrant.NewExpressionVariable("$score"), // the fused score from the RRF prefetch
|
||||
qdrant.NewExpressionExpDecay(&qdrant.DecayParamsExpression{
|
||||
X: qdrant.NewExpressionDatetimeKey("published_at"),
|
||||
Target: qdrant.NewExpressionDatetime("YYYY-MM-DDT00:00:00Z"),
|
||||
Scale: qdrant.PtrOf(float32(86400 * 180)), // 180 days in seconds
|
||||
Midpoint: qdrant.PtrOf(float32(0.5)),
|
||||
}),
|
||||
},
|
||||
}),
|
||||
}),
|
||||
Limit: qdrant.PtrOf(uint64(10)),
|
||||
})
|
||||
}
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
```http
|
||||
POST /collections/{collection_name}/points/query
|
||||
{
|
||||
"prefetch": {
|
||||
"prefetch": [
|
||||
{
|
||||
"query": {
|
||||
"indices": [1, 42], // <┐
|
||||
"values": [0.22, 0.8] // <┴─sparse vector
|
||||
},
|
||||
"using": "sparse",
|
||||
"limit": 100
|
||||
},
|
||||
{
|
||||
"query": [0.01, 0.45, 0.67, ...], // <-- dense vector
|
||||
"using": "dense",
|
||||
"limit": 100
|
||||
}
|
||||
],
|
||||
"query": { "fusion": "rrf" },
|
||||
"limit": 100
|
||||
},
|
||||
"query": {
|
||||
"formula": {
|
||||
"sum": [
|
||||
"$score", // the fused score from the RRF prefetch
|
||||
{
|
||||
"exp_decay": {
|
||||
"x": {
|
||||
"datetime_key": "published_at"
|
||||
},
|
||||
"target": {
|
||||
"datetime": "YYYY-MM-DDT00:00:00Z"
|
||||
},
|
||||
"scale": 15552000, // 180 days in seconds
|
||||
"midpoint": 0.5
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"limit": 10
|
||||
}
|
||||
```
|
||||
+69
@@ -0,0 +1,69 @@
|
||||
package com.example.snippets_amalgamation;
|
||||
|
||||
import static io.qdrant.client.ExpressionFactory.datetime;
|
||||
import static io.qdrant.client.ExpressionFactory.datetimeKey;
|
||||
import static io.qdrant.client.ExpressionFactory.expDecay;
|
||||
import static io.qdrant.client.ExpressionFactory.sum;
|
||||
import static io.qdrant.client.ExpressionFactory.variable;
|
||||
import static io.qdrant.client.QueryFactory.formula;
|
||||
import static io.qdrant.client.QueryFactory.fusion;
|
||||
import static io.qdrant.client.QueryFactory.nearest;
|
||||
|
||||
import io.qdrant.client.QdrantClient;
|
||||
import io.qdrant.client.QdrantGrpcClient;
|
||||
import io.qdrant.client.grpc.Points.DecayParamsExpression;
|
||||
import io.qdrant.client.grpc.Points.Formula;
|
||||
import io.qdrant.client.grpc.Points.Fusion;
|
||||
import io.qdrant.client.grpc.Points.PrefetchQuery;
|
||||
import io.qdrant.client.grpc.Points.QueryPoints;
|
||||
import io.qdrant.client.grpc.Points.SumExpression;
|
||||
import java.util.List;
|
||||
|
||||
public class Snippet {
|
||||
public static void run() throws Exception {
|
||||
QdrantClient client =
|
||||
new QdrantClient(QdrantGrpcClient.newBuilder("localhost", 6334, false).build());
|
||||
|
||||
client.queryAsync(
|
||||
QueryPoints.newBuilder()
|
||||
.setCollectionName("{collection_name}")
|
||||
.addPrefetch(
|
||||
PrefetchQuery.newBuilder()
|
||||
.addPrefetch(
|
||||
PrefetchQuery.newBuilder()
|
||||
.setQuery(nearest(List.of(0.22f, 0.8f), List.of(1, 42)))
|
||||
.setUsing("sparse")
|
||||
.setLimit(100)
|
||||
.build())
|
||||
.addPrefetch(
|
||||
PrefetchQuery.newBuilder()
|
||||
.setQuery(nearest(List.of(0.01f, 0.45f, 0.67f)))
|
||||
.setUsing("dense")
|
||||
.setLimit(100)
|
||||
.build())
|
||||
.setQuery(fusion(Fusion.RRF))
|
||||
.setLimit(100)
|
||||
.build())
|
||||
.setQuery(
|
||||
formula(
|
||||
Formula.newBuilder()
|
||||
.setExpression(
|
||||
sum(
|
||||
SumExpression.newBuilder()
|
||||
.addSum(variable("$score"))
|
||||
.addSum(
|
||||
expDecay(
|
||||
DecayParamsExpression.newBuilder()
|
||||
.setX(datetimeKey("published_at"))
|
||||
.setTarget(
|
||||
datetime("YYYY-MM-DDT00:00:00Z"))
|
||||
.setScale(86400 * 180)
|
||||
.setMidpoint(0.5f)
|
||||
.build()))
|
||||
.build()))
|
||||
.build()))
|
||||
.setLimit(10)
|
||||
.build())
|
||||
.get();
|
||||
}
|
||||
}
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
from qdrant_client import QdrantClient, models
|
||||
|
||||
client = QdrantClient(url="http://localhost:6333")
|
||||
|
||||
client.query_points(
|
||||
collection_name="{collection_name}",
|
||||
prefetch=models.Prefetch(
|
||||
prefetch=[
|
||||
models.Prefetch(
|
||||
query=models.SparseVector(indices=[1, 42], values=[0.22, 0.8]),
|
||||
using="sparse",
|
||||
limit=100,
|
||||
),
|
||||
models.Prefetch(
|
||||
query=[0.01, 0.45, 0.67], # <-- dense vector
|
||||
using="dense",
|
||||
limit=100,
|
||||
),
|
||||
],
|
||||
query=models.FusionQuery(fusion=models.Fusion.RRF),
|
||||
limit=100,
|
||||
),
|
||||
query=models.FormulaQuery(
|
||||
formula=models.SumExpression(
|
||||
sum=[
|
||||
"$score", # the fused score from the RRF prefetch
|
||||
models.ExpDecayExpression(
|
||||
exp_decay=models.DecayParamsExpression(
|
||||
x=models.DatetimeKeyExpression(datetime_key="published_at"),
|
||||
target=models.DatetimeExpression(datetime="YYYY-MM-DDT00:00:00Z"),
|
||||
scale=86400 * 180, # 180 days in seconds
|
||||
midpoint=0.5,
|
||||
)
|
||||
),
|
||||
]
|
||||
)
|
||||
),
|
||||
limit=10,
|
||||
)
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
use qdrant_client::Qdrant;
|
||||
use qdrant_client::qdrant::{
|
||||
DecayParamsExpressionBuilder, Expression, FormulaBuilder, Fusion, PrefetchQueryBuilder, Query,
|
||||
QueryPointsBuilder,
|
||||
};
|
||||
|
||||
pub async fn main() -> anyhow::Result<()> {
|
||||
let client = Qdrant::from_url("http://localhost:6334").build()?;
|
||||
|
||||
client.query(
|
||||
QueryPointsBuilder::new("{collection_name}")
|
||||
.add_prefetch(
|
||||
PrefetchQueryBuilder::default()
|
||||
.add_prefetch(
|
||||
PrefetchQueryBuilder::default()
|
||||
.query(Query::new_nearest([(1, 0.22), (42, 0.8)].as_slice()))
|
||||
.using("sparse")
|
||||
.limit(100u64),
|
||||
)
|
||||
.add_prefetch(
|
||||
PrefetchQueryBuilder::default()
|
||||
.query(Query::new_nearest(vec![0.01, 0.45, 0.67]))
|
||||
.using("dense")
|
||||
.limit(100u64),
|
||||
)
|
||||
.query(Query::new_fusion(Fusion::Rrf))
|
||||
.limit(100u64),
|
||||
)
|
||||
.query(
|
||||
FormulaBuilder::new(Expression::sum_with([
|
||||
Expression::score(),
|
||||
Expression::exp_decay(
|
||||
DecayParamsExpressionBuilder::new(Expression::datetime_key("published_at"))
|
||||
.target(Expression::datetime("YYYY-MM-DDT00:00:00Z"))
|
||||
.scale(86400.0 * 180.0)
|
||||
.midpoint(0.5),
|
||||
),
|
||||
])),
|
||||
)
|
||||
.limit(10u64),
|
||||
)
|
||||
.await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
import { QdrantClient } from "@qdrant/js-client-rest";
|
||||
|
||||
const client = new QdrantClient({ host: "localhost", port: 6333 });
|
||||
|
||||
await client.query("{collection_name}", {
|
||||
prefetch: {
|
||||
prefetch: [
|
||||
{
|
||||
query: {
|
||||
values: [0.22, 0.8],
|
||||
indices: [1, 42],
|
||||
},
|
||||
using: "sparse",
|
||||
limit: 100,
|
||||
},
|
||||
{
|
||||
query: [0.01, 0.45, 0.67], // <-- dense vector
|
||||
using: "dense",
|
||||
limit: 100,
|
||||
},
|
||||
],
|
||||
query: { fusion: "rrf" },
|
||||
limit: 100,
|
||||
},
|
||||
query: {
|
||||
formula: {
|
||||
sum: [
|
||||
"$score", // the fused score from the RRF prefetch
|
||||
{
|
||||
exp_decay: {
|
||||
x: { datetime_key: "published_at" },
|
||||
target: { datetime: "YYYY-MM-DDT00:00:00Z" },
|
||||
scale: 86400 * 180, // 180 days in seconds
|
||||
midpoint: 0.5,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
limit: 10,
|
||||
});
|
||||
Reference in New Issue
Block a user