mirror of
https://github.com/qdrant/landing_page.git
synced 2026-10-05 10:58:32 +02:00
[1.15] New BQ methods docs (#1798)
* bq-new-methods-1-15 * fix snippets path * fix snippets * update 2bit description * Update qdrant-landing/content/documentation/headless/snippets/create-collection/with-binary-quantization-and-query-encoding/go.md * Update qdrant-landing/content/documentation/guides/quantization.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update go.md * review text and update some snippets * simplify query encoding for rust * upd rust snippets * Update quantization.md --------- Co-authored-by: Anush <anushshetty90@gmail.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Andrey Vasnetsov <andrey@vasnetsov.com>
This commit is contained in:
co-authored by
Copilot
Anush
Andrey Vasnetsov
parent
1af478e8c7
commit
fe7a45a4ad
+3
@@ -0,0 +1,3 @@
|
||||
This code configures a new collection with 2-bit binary quantization.
|
||||
2-bit binary quantization allows to improve precision of the search results at a slight cost of storage size.
|
||||
There are other bit depths available: for example: `two_bits` and `one_and_half_bits`.
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
```csharp
|
||||
using Qdrant.Client;
|
||||
using Qdrant.Client.Grpc;
|
||||
|
||||
var client = new QdrantClient("localhost", 6334);
|
||||
|
||||
await client.CreateCollectionAsync(
|
||||
collectionName: "{collection_name}",
|
||||
vectorsConfig: new VectorParams { Size = 1536, Distance = Distance.Cosine },
|
||||
quantizationConfig: new QuantizationConfig
|
||||
{
|
||||
Binary = new BinaryQuantization {
|
||||
Encoding = BinaryQuantizationEncoding.TwoBits,
|
||||
AlwaysRam = true
|
||||
}
|
||||
}
|
||||
);
|
||||
```
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
```go
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/qdrant/go-client/qdrant"
|
||||
)
|
||||
|
||||
client, err := qdrant.NewClient(&qdrant.Config{
|
||||
Host: "localhost",
|
||||
Port: 6334,
|
||||
})
|
||||
|
||||
client.CreateCollection(context.Background(), &qdrant.CreateCollection{
|
||||
CollectionName: "{collection_name}",
|
||||
VectorsConfig: qdrant.NewVectorsConfig(&qdrant.VectorParams{
|
||||
Size: 1536,
|
||||
Distance: qdrant.Distance_Cosine,
|
||||
}),
|
||||
QuantizationConfig: qdrant.NewQuantizationBinary(
|
||||
&qdrant.BinaryQuantization{
|
||||
Encoding: qdrant.BinaryQuantizationEncoding_TwoBits.Enum(),
|
||||
AlwaysRam: qdrant.PtrOf(true),
|
||||
},
|
||||
),
|
||||
})
|
||||
```
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
```http
|
||||
PUT /collections/{collection_name}
|
||||
{
|
||||
"vectors": {
|
||||
"size": 1536,
|
||||
"distance": "Cosine"
|
||||
},
|
||||
"quantization_config": {
|
||||
"binary": {
|
||||
"encoding": "two_bits",
|
||||
"always_ram": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
```java
|
||||
import io.qdrant.client.QdrantClient;
|
||||
import io.qdrant.client.QdrantGrpcClient;
|
||||
import io.qdrant.client.grpc.Collections.BinaryQuantization;
|
||||
import io.qdrant.client.grpc.Collections.CreateCollection;
|
||||
import io.qdrant.client.grpc.Collections.Distance;
|
||||
import io.qdrant.client.grpc.Collections.QuantizationConfig;
|
||||
import io.qdrant.client.grpc.Collections.VectorParams;
|
||||
import io.qdrant.client.grpc.Collections.VectorsConfig;
|
||||
import io.qdrant.client.grpc.Collections.BinaryQuantizationEncoding;
|
||||
|
||||
QdrantClient client =
|
||||
new QdrantClient(QdrantGrpcClient.newBuilder("localhost", 6334, false).build());
|
||||
|
||||
client
|
||||
.createCollectionAsync(
|
||||
CreateCollection.newBuilder()
|
||||
.setCollectionName("{collection_name}")
|
||||
.setVectorsConfig(
|
||||
VectorsConfig.newBuilder()
|
||||
.setParams(
|
||||
VectorParams.newBuilder()
|
||||
.setSize(1536)
|
||||
.setDistance(Distance.Cosine)
|
||||
.build())
|
||||
.build())
|
||||
.setQuantizationConfig(
|
||||
QuantizationConfig.newBuilder()
|
||||
.setBinary(BinaryQuantization
|
||||
.newBuilder()
|
||||
.setEncoding(BinaryQuantizationEncoding.TwoBits)
|
||||
.setAlwaysRam(true)
|
||||
.build())
|
||||
.build())
|
||||
.build())
|
||||
.get();
|
||||
```
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
```python
|
||||
from qdrant_client import QdrantClient, models
|
||||
|
||||
client = QdrantClient(url="http://localhost:6333")
|
||||
|
||||
client.create_collection(
|
||||
collection_name="{collection_name}",
|
||||
vectors_config=models.VectorParams(size=1536, distance=models.Distance.COSINE),
|
||||
quantization_config=models.BinaryQuantization(
|
||||
binary=models.BinaryQuantizationConfig(
|
||||
encoding=models.BinaryQuantizationEncoding.TWO_BITS,
|
||||
always_ram=True,
|
||||
),
|
||||
),
|
||||
)
|
||||
```
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
```rust
|
||||
use qdrant_client::qdrant::{
|
||||
BinaryQuantizationBuilder,
|
||||
CreateCollectionBuilder,
|
||||
Distance,
|
||||
VectorParamsBuilder,
|
||||
BinaryQuantizationEncoding,
|
||||
};
|
||||
use qdrant_client::Qdrant;
|
||||
|
||||
let client = Qdrant::from_url("http://localhost:6334").build()?;
|
||||
|
||||
client
|
||||
.create_collection(
|
||||
CreateCollectionBuilder::new("{collection_name}")
|
||||
.vectors_config(VectorParamsBuilder::new(1536, Distance::Cosine))
|
||||
.quantization_config(BinaryQuantizationBuilder::new(true)
|
||||
.encoding(BinaryQuantizationEncoding::TwoBits)
|
||||
),
|
||||
)
|
||||
.await?;
|
||||
```
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
```typescript
|
||||
import { QdrantClient } from "@qdrant/js-client-rest";
|
||||
|
||||
const client = new QdrantClient({ host: "localhost", port: 6333 });
|
||||
|
||||
client.createCollection("{collection_name}", {
|
||||
vectors: {
|
||||
size: 1536,
|
||||
distance: "Cosine",
|
||||
},
|
||||
quantization_config: {
|
||||
binary: {
|
||||
encoding: "two_bits",
|
||||
always_ram: true,
|
||||
},
|
||||
},
|
||||
});
|
||||
```
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
This code configures a new collection with binary quantization with asymmetric quantization.
|
||||
Asymmetric quantization may have different bit depth, in this example we use 1 bit for stored vectors and 8 bits for query encoding.
|
||||
Using asymmetric quantization allows to improve precision of the search results at a slight cost of performance.
|
||||
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
```csharp
|
||||
using Qdrant.Client;
|
||||
using Qdrant.Client.Grpc;
|
||||
|
||||
var client = new QdrantClient("localhost", 6334);
|
||||
|
||||
await client.CreateCollectionAsync(
|
||||
collectionName: "{collection_name}",
|
||||
vectorsConfig: new VectorParams { Size = 1536, Distance = Distance.Cosine },
|
||||
quantizationConfig: new QuantizationConfig
|
||||
{
|
||||
Binary = new BinaryQuantization {
|
||||
QueryEncoding = new BinaryQuantizationQueryEncoding
|
||||
{
|
||||
Setting = BinaryQuantizationQueryEncoding.Types.Setting.Scalar8Bits,
|
||||
},
|
||||
AlwaysRam = true
|
||||
}
|
||||
}
|
||||
);
|
||||
```
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
```go
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/qdrant/go-client/qdrant"
|
||||
)
|
||||
|
||||
client, err := qdrant.NewClient(&qdrant.Config{
|
||||
Host: "localhost",
|
||||
Port: 6334,
|
||||
})
|
||||
|
||||
client.CreateCollection(context.Background(), &qdrant.CreateCollection{
|
||||
CollectionName: "{collection_name}",
|
||||
VectorsConfig: qdrant.NewVectorsConfig(&qdrant.VectorParams{
|
||||
Size: 1536,
|
||||
Distance: qdrant.Distance_Cosine,
|
||||
}),
|
||||
QuantizationConfig: qdrant.NewQuantizationBinary(
|
||||
&qdrant.BinaryQuantization{
|
||||
QueryEncoding: qdrant.NewBinaryQuantizationQueryEncodingSetting(BinaryQuantizationQueryEncoding_Scalar8Bits),
|
||||
AlwaysRam: qdrant.PtrOf(true),
|
||||
},
|
||||
),
|
||||
})
|
||||
```
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
```http
|
||||
PUT /collections/{collection_name}
|
||||
{
|
||||
"vectors": {
|
||||
"size": 1536,
|
||||
"distance": "Cosine"
|
||||
},
|
||||
"quantization_config": {
|
||||
"binary": {
|
||||
"query_encoding": "scalar8bits",
|
||||
"always_ram": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
```java
|
||||
import io.qdrant.client.QdrantClient;
|
||||
import io.qdrant.client.QdrantGrpcClient;
|
||||
import io.qdrant.client.grpc.Collections.BinaryQuantization;
|
||||
import io.qdrant.client.grpc.Collections.CreateCollection;
|
||||
import io.qdrant.client.grpc.Collections.Distance;
|
||||
import io.qdrant.client.grpc.Collections.QuantizationConfig;
|
||||
import io.qdrant.client.grpc.Collections.VectorParams;
|
||||
import io.qdrant.client.grpc.Collections.VectorsConfig;
|
||||
import io.qdrant.client.grpc.Collections.BinaryQuantizationQueryEncoding;
|
||||
|
||||
QdrantClient client =
|
||||
new QdrantClient(QdrantGrpcClient.newBuilder("localhost", 6334, false).build());
|
||||
|
||||
client
|
||||
.createCollectionAsync(
|
||||
CreateCollection.newBuilder()
|
||||
.setCollectionName("{collection_name}")
|
||||
.setVectorsConfig(
|
||||
VectorsConfig.newBuilder()
|
||||
.setParams(
|
||||
VectorParams.newBuilder()
|
||||
.setSize(1536)
|
||||
.setDistance(Distance.Cosine)
|
||||
.build())
|
||||
.build())
|
||||
.setQuantizationConfig(
|
||||
QuantizationConfig.newBuilder()
|
||||
.setBinary(BinaryQuantization.newBuilder()
|
||||
.setQueryEncoding(BinaryQuantizationQueryEncoding
|
||||
.newBuilder()
|
||||
.setSetting(BinaryQuantizationQueryEncoding.Setting.Scalar8Bits)
|
||||
.build())
|
||||
.setAlwaysRam(true)
|
||||
.build())
|
||||
.build())
|
||||
.build())
|
||||
.get();
|
||||
```
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
```python
|
||||
from qdrant_client import QdrantClient, models
|
||||
|
||||
client = QdrantClient(url="http://localhost:6333")
|
||||
|
||||
client.create_collection(
|
||||
collection_name="{collection_name}",
|
||||
vectors_config=models.VectorParams(size=1536, distance=models.Distance.COSINE),
|
||||
quantization_config=models.BinaryQuantization(
|
||||
binary=models.BinaryQuantizationConfig(
|
||||
query_encoding=models.BinaryQuantizationQueryEncoding.SCALAR8BITS,
|
||||
always_ram=True,
|
||||
),
|
||||
),
|
||||
)
|
||||
```
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
```rust
|
||||
use qdrant_client::qdrant::{
|
||||
BinaryQuantizationBuilder,
|
||||
CreateCollectionBuilder,
|
||||
Distance,
|
||||
VectorParamsBuilder,
|
||||
BinaryQuantizationQueryEncoding,
|
||||
};
|
||||
use qdrant_client::Qdrant;
|
||||
|
||||
let client = Qdrant::from_url("http://localhost:6334").build()?;
|
||||
|
||||
client
|
||||
.create_collection(
|
||||
CreateCollectionBuilder::new("{collection_name}")
|
||||
.vectors_config(VectorParamsBuilder::new(1536, Distance::Cosine))
|
||||
.quantization_config(
|
||||
BinaryQuantizationBuilder::new(true)
|
||||
.query_encoding(BinaryQuantizationQueryEncoding::scalar8bits())
|
||||
),
|
||||
)
|
||||
.await?;
|
||||
```
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
```typescript
|
||||
import { QdrantClient } from "@qdrant/js-client-rest";
|
||||
|
||||
const client = new QdrantClient({ host: "localhost", port: 6333 });
|
||||
|
||||
client.createCollection("{collection_name}", {
|
||||
vectors: {
|
||||
size: 1536,
|
||||
distance: "Cosine",
|
||||
},
|
||||
quantization_config: {
|
||||
binary: {
|
||||
query_encoding: "scalar8bits",
|
||||
always_ram: true,
|
||||
},
|
||||
},
|
||||
});
|
||||
```
|
||||
Reference in New Issue
Block a user