mirror of
https://github.com/qdrant/landing_page.git
synced 2026-09-30 00:18:32 +02:00
Merge pull request #2298 from qdrant/version-1.18
Publish docs for version 1.18
This commit is contained in:
@@ -13,11 +13,13 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
openjdk-21-jdk-headless \
|
||||
# for python client
|
||||
python3 \
|
||||
# for typescript client
|
||||
nodejs \
|
||||
npm \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# for typescript client - Node 22 (Node 18 EOL April 2025, pnpm requires 20+)
|
||||
RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - && \
|
||||
apt-get install -y --no-install-recommends nodejs && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# for csharp client
|
||||
RUN add-apt-repository ppa:dotnet/backports && \
|
||||
apt-get update && \
|
||||
|
||||
@@ -88,7 +88,7 @@ def main() -> None:
|
||||
if args.java is not None:
|
||||
url = "https://github.com/qdrant/java-client"
|
||||
dir = BASE_DIR / "clients" / "java"
|
||||
checkout_repo(url, dir, "master")
|
||||
checkout_repo(url, dir, args.java)
|
||||
ok = True
|
||||
if args.typescript is not None:
|
||||
url = "https://github.com/qdrant/qdrant-js"
|
||||
@@ -195,6 +195,7 @@ def checkout_repo(
|
||||
if p.returncode == 0:
|
||||
rev = p.stdout.strip()
|
||||
|
||||
subprocess.run(["git", "-C", dest_dir, "reset", "--hard"], check=True)
|
||||
subprocess.run(["git", "-C", dest_dir, "checkout", "--detach", rev], check=True)
|
||||
|
||||
|
||||
|
||||
@@ -4,14 +4,14 @@ go 1.25.2
|
||||
|
||||
require (
|
||||
github.com/google/uuid v1.6.0
|
||||
github.com/qdrant/go-client v1.17.1
|
||||
github.com/qdrant/go-client v1.18.1
|
||||
)
|
||||
|
||||
require (
|
||||
golang.org/x/net v0.50.0 // indirect
|
||||
golang.org/x/sys v0.41.0 // indirect
|
||||
golang.org/x/text v0.34.0 // indirect
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect
|
||||
google.golang.org/grpc v1.78.0 // indirect
|
||||
golang.org/x/net v0.53.0 // indirect
|
||||
golang.org/x/sys v0.43.0 // indirect
|
||||
golang.org/x/text v0.36.0 // indirect
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20260427160629-7cedc36a6bc4 // indirect
|
||||
google.golang.org/grpc v1.80.0 // indirect
|
||||
google.golang.org/protobuf v1.36.11 // indirect
|
||||
)
|
||||
|
||||
@@ -10,31 +10,31 @@ github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
|
||||
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
|
||||
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/qdrant/go-client v1.17.1 h1:7QmPwDddrHL3hC4NfycwtQlraVKRLcRi++BX6TTm+3g=
|
||||
github.com/qdrant/go-client v1.17.1/go.mod h1:n1h6GhkdAzcohoXt/5Z19I2yxbCkMA6Jejob3S6NZT8=
|
||||
github.com/qdrant/go-client v1.18.1 h1:o/dDmSl6ONAlaAFtjdlzztcs3NH0tJY3l5C/z/Uu0bE=
|
||||
github.com/qdrant/go-client v1.18.1/go.mod h1:Xkfp+r89uNOgSbvilVAhCZ3wKI4G+hB/r9Zr2m4zifI=
|
||||
go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
|
||||
go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=
|
||||
go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms=
|
||||
go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g=
|
||||
go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g=
|
||||
go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc=
|
||||
go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E=
|
||||
go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg=
|
||||
go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM=
|
||||
go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA=
|
||||
go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw=
|
||||
go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA=
|
||||
golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60=
|
||||
golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM=
|
||||
golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k=
|
||||
golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
|
||||
golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk=
|
||||
golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA=
|
||||
gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk=
|
||||
gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ=
|
||||
google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc=
|
||||
google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U=
|
||||
go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I=
|
||||
go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0=
|
||||
go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM=
|
||||
go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY=
|
||||
go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18=
|
||||
go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE=
|
||||
go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8=
|
||||
go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew=
|
||||
go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A=
|
||||
go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0=
|
||||
golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA=
|
||||
golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs=
|
||||
golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI=
|
||||
golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
|
||||
golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg=
|
||||
golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164=
|
||||
gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4=
|
||||
gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20260427160629-7cedc36a6bc4 h1:tEkOQcXgF6dH1G+MVKZrfpYvozGrzb91k6ha7jireSM=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20260427160629-7cedc36a6bc4/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
|
||||
google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM=
|
||||
google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4=
|
||||
google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=
|
||||
google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
|
||||
|
||||
@@ -10,7 +10,7 @@ dependencies = [
|
||||
]
|
||||
|
||||
[tool.uv.sources]
|
||||
qdrant-client = { git = "https://github.com/qdrant/qdrant-client", tag = "dev" }
|
||||
qdrant-client = { git = "https://github.com/qdrant/qdrant-client", tag = "v1.18.0" }
|
||||
|
||||
[dependency-groups]
|
||||
dev = [
|
||||
|
||||
+3
-3
@@ -1420,8 +1420,8 @@ wheels = [
|
||||
|
||||
[[package]]
|
||||
name = "qdrant-client"
|
||||
version = "1.17.1.dev0"
|
||||
source = { git = "https://github.com/qdrant/qdrant-client?tag=dev#c7a5bef84b57ab3149b78d207b5de8aa3268d72e" }
|
||||
version = "1.18.0"
|
||||
source = { git = "https://github.com/qdrant/qdrant-client?tag=v1.18.0#326adefcc2158121dd0d04877e1a483b5aa2627b" }
|
||||
dependencies = [
|
||||
{ name = "grpcio" },
|
||||
{ name = "httpx", extra = ["http2"] },
|
||||
@@ -1509,7 +1509,7 @@ dev = [
|
||||
requires-dist = [
|
||||
{ name = "datasets", specifier = ">=4.4.1" },
|
||||
{ name = "fastembed" },
|
||||
{ name = "qdrant-client", git = "https://github.com/qdrant/qdrant-client?tag=dev" },
|
||||
{ name = "qdrant-client", git = "https://github.com/qdrant/qdrant-client?tag=v1.18.0" },
|
||||
{ name = "qdrant-edge-py", specifier = "==0.6.0" },
|
||||
]
|
||||
|
||||
|
||||
+16
-88
@@ -2864,7 +2864,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"itertools 0.14.0",
|
||||
"itertools 0.11.0",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
@@ -2881,8 +2881,8 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "qdrant-client"
|
||||
version = "1.16.1-dev"
|
||||
source = "git+https://github.com/qdrant/rust-client?branch=dev#d9cf226e4583b82d8cb8c065851380c6d0b49765"
|
||||
version = "1.18.0"
|
||||
source = "git+https://github.com/qdrant/rust-client?branch=master#357dec9e56da4e5afd41645e8c414873a7f8681d"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"derive_builder",
|
||||
@@ -3049,7 +3049,7 @@ dependencies = [
|
||||
"once_cell",
|
||||
"socket2 0.6.3",
|
||||
"tracing",
|
||||
"windows-sys 0.60.2",
|
||||
"windows-sys 0.59.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -3819,6 +3819,8 @@ name = "snippets-amalgamation"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"chrono",
|
||||
"csv",
|
||||
"fs-err",
|
||||
"ordered-float 5.1.0",
|
||||
"qdrant-client",
|
||||
@@ -4973,7 +4975,7 @@ version = "0.52.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
|
||||
dependencies = [
|
||||
"windows-targets 0.52.6",
|
||||
"windows-targets",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -4982,16 +4984,7 @@ version = "0.59.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
|
||||
dependencies = [
|
||||
"windows-targets 0.52.6",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-sys"
|
||||
version = "0.60.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
|
||||
dependencies = [
|
||||
"windows-targets 0.53.5",
|
||||
"windows-targets",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -5009,31 +5002,14 @@ version = "0.52.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
|
||||
dependencies = [
|
||||
"windows_aarch64_gnullvm 0.52.6",
|
||||
"windows_aarch64_msvc 0.52.6",
|
||||
"windows_i686_gnu 0.52.6",
|
||||
"windows_i686_gnullvm 0.52.6",
|
||||
"windows_i686_msvc 0.52.6",
|
||||
"windows_x86_64_gnu 0.52.6",
|
||||
"windows_x86_64_gnullvm 0.52.6",
|
||||
"windows_x86_64_msvc 0.52.6",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-targets"
|
||||
version = "0.53.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"
|
||||
dependencies = [
|
||||
"windows-link 0.2.1",
|
||||
"windows_aarch64_gnullvm 0.53.1",
|
||||
"windows_aarch64_msvc 0.53.1",
|
||||
"windows_i686_gnu 0.53.1",
|
||||
"windows_i686_gnullvm 0.53.1",
|
||||
"windows_i686_msvc 0.53.1",
|
||||
"windows_x86_64_gnu 0.53.1",
|
||||
"windows_x86_64_gnullvm 0.53.1",
|
||||
"windows_x86_64_msvc 0.53.1",
|
||||
"windows_aarch64_gnullvm",
|
||||
"windows_aarch64_msvc",
|
||||
"windows_i686_gnu",
|
||||
"windows_i686_gnullvm",
|
||||
"windows_i686_msvc",
|
||||
"windows_x86_64_gnu",
|
||||
"windows_x86_64_gnullvm",
|
||||
"windows_x86_64_msvc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -5060,96 +5036,48 @@ version = "0.52.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
|
||||
|
||||
[[package]]
|
||||
name = "windows_aarch64_gnullvm"
|
||||
version = "0.53.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
|
||||
|
||||
[[package]]
|
||||
name = "windows_aarch64_msvc"
|
||||
version = "0.52.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
|
||||
|
||||
[[package]]
|
||||
name = "windows_aarch64_msvc"
|
||||
version = "0.53.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_gnu"
|
||||
version = "0.52.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_gnu"
|
||||
version = "0.53.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_gnullvm"
|
||||
version = "0.52.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_gnullvm"
|
||||
version = "0.53.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_msvc"
|
||||
version = "0.52.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_msvc"
|
||||
version = "0.53.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnu"
|
||||
version = "0.52.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnu"
|
||||
version = "0.53.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnullvm"
|
||||
version = "0.52.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnullvm"
|
||||
version = "0.53.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_msvc"
|
||||
version = "0.52.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_msvc"
|
||||
version = "0.53.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650"
|
||||
|
||||
[[package]]
|
||||
name = "winnow"
|
||||
version = "0.7.15"
|
||||
|
||||
@@ -10,7 +10,7 @@ csv = "1.3"
|
||||
qdrant-edge = "0.6.0"
|
||||
fs-err = "3"
|
||||
ordered-float = "5"
|
||||
qdrant-client = { git = "https://github.com/qdrant/rust-client", branch = "dev" }
|
||||
qdrant-client = { git = "https://github.com/qdrant/rust-client", branch = "master" }
|
||||
serde_json = "1.0.145"
|
||||
tempfile = "3"
|
||||
tokio = { version = "1.48.0", features = ["rt-multi-thread", "macros"] }
|
||||
|
||||
@@ -0,0 +1,160 @@
|
||||
---
|
||||
title: "Qdrant 1.18 - TurboQuant"
|
||||
draft: false
|
||||
slug: qdrant-1.18.x
|
||||
short_description: "Version 1.18 of Qdrant introduces TurboQuant, a novel quantization method."
|
||||
description: "Version 1.18 of Qdrant introduces TurboQuant, a novel quantization method that, at twice the compression ratio of scalar quantization, delivers similar recall and speed."
|
||||
preview_image: /blog/qdrant-1.18.x/social_preview.jpg
|
||||
social_preview_image: /blog/qdrant-1.18.x/social_preview.jpg
|
||||
date: 2026-05-11T00:00:00-08:00
|
||||
author: Abdon Pijpelink
|
||||
featured: true
|
||||
tags:
|
||||
- vector search
|
||||
- quantization
|
||||
- observability
|
||||
- memory monitoring
|
||||
---
|
||||
|
||||
[**Qdrant 1.18.0 is out!**](https://github.com/qdrant/qdrant/releases/tag/v1.18.0) Let's look at the main features for this version:
|
||||
|
||||
**TurboQuant:** A new quantization method that, at twice the compression ratio of scalar quantization, delivers similar recall and speed.
|
||||
|
||||
**Memory Monitoring:** Inspect a collection's disk, RAM, and page cache usage broken down by component (vectors, payload, indexes, and more) via a new Web UI view and API endpoint.
|
||||
|
||||
**Adding and Removing Named Vectors:** Add or remove named vectors to an existing collection's schema without having to recreate it.
|
||||
|
||||
Additionally, version 1.18 adds two improvements to audit logging: a new API endpoint to query audit logs, and support for request tracing IDs. It also introduces per-collection API metrics and two new strict mode guardrails.
|
||||
|
||||
## TurboQuant
|
||||
|
||||

|
||||
|
||||
Quantization is a technique that reduces the memory footprint of a vector collection by compressing floating-point values to a lower bit depth. Smaller vectors fit more readily in memory, which speeds up search and lowers infrastructure costs.
|
||||
|
||||
Choosing a quantization method means accepting tradeoffs. Binary quantization is fast but requires a centered vector distribution, and accuracy degrades significantly for smaller vectors. Scalar quantization is reliable but compresses only by a factor of four. Product quantization compresses more aggressively, but at the cost of accuracy and speed.
|
||||
|
||||
Version 1.18 introduces support for [TurboQuant](/documentation/manage-data/quantization/), a new quantization method developed by [Google Research](https://research.google/blog/turboquant-redefining-ai-efficiency-with-extreme-compression/). TurboQuant applies a fast Hadamard rotation to vectors before compression, which redistributes values evenly across coordinates. Because this rotation normalizes the data distribution, TurboQuant works well with any embedding model.
|
||||
|
||||
Qdrant's implementation of TurboQuant extends the original algorithm to close the gap between the algorithm's theoretical assumptions and real-world embeddings. A length renormalization step corrects a recall-degrading bias caused by quantization error, an idea borrowed from [RaBitQ](https://arxiv.org/abs/2405.12497). A per-coordinate calibration pre-pass fits the data to precomputed codebooks, aiming to recover accuracy lost to distribution mismatch. Cosine, dot product, and L2 are all supported as first-class distance metrics. And finally, we implemented highly optimized SIMD acceleration for TurboQuant to achieve maximum performance.
|
||||
|
||||
### How TurboQuant Compares
|
||||
|
||||
#### TurboQuant vs Scalar Quantization
|
||||
|
||||
The following table shows recall for 4-bit TurboQuant (TQ4) compared to uncompressed vectors (F32) and scalar quantization (SQ) across four benchmarked datasets. Benchmarks were run with HNSW configured with `m=16` and `ef_construct=128`.
|
||||
|
||||
| Dataset | F32 | SQ | TQ4 |
|
||||
|---|---|---|---|
|
||||
| [arxiv-titles-instructorxl-embeddings](https://huggingface.co/datasets/Qdrant/arxiv-titles-instructorxl-embeddings) | 0.9419 | 0.9285 | 0.9193 |
|
||||
| [gte-multilingual-ads-1M](https://huggingface.co/datasets/Qdrant/gte-multilingual-ads-1M) | 0.9298 | 0.9187 | 0.9169 |
|
||||
| [dbpedia-entities-openai3-text-embedding-3-large-1536-100K](https://huggingface.co/datasets/Qdrant/dbpedia-entities-openai3-text-embedding-3-large-1536-100K) | 0.9348 | 0.9339 | 0.9271 |
|
||||
| [wikipedia-2023-11-embed-multilingual-v3](https://huggingface.co/datasets/CohereLabs/wikipedia-2023-11-embed-multilingual-v3) | 0.9446 | 0.9014 | 0.9261 |
|
||||
|
||||
Compared to scalar quantization, TurboQuant delivers similar recall **at double the compression ratio**. Results vary by dataset and embedding model: TurboQuant may slightly outperform or underperform scalar quantization.
|
||||
|
||||
#### TurboQuant vs Binary Quantization
|
||||
|
||||
The following table shows recall for 1-bit TurboQuant (TQ1) compared to uncompressed vectors (F32) and 1-bit binary quantization (BQ1) across four benchmarked datasets. Benchmarks were run with HNSW configured with `m=16` and `ef_construct=128`.
|
||||
|
||||
| Dataset | F32 | BQ1 | TQ1 |
|
||||
|---|---|---|---|
|
||||
| [arxiv-titles-instructorxl-embeddings](https://huggingface.co/datasets/Qdrant/arxiv-titles-instructorxl-embeddings) | 0.9419 | 0.4683 | 0.6763 |
|
||||
| [gte-multilingual-ads-1M](https://huggingface.co/datasets/Qdrant/gte-multilingual-ads-1M) | 0.9298 | 0.6760 | 0.7717 |
|
||||
| [dbpedia-entities-openai3-text-embedding-3-large-1536-100K](https://huggingface.co/datasets/Qdrant/dbpedia-entities-openai3-text-embedding-3-large-1536-100K) | 0.9348 | 0.6921 | 0.7924 |
|
||||
| [wikipedia-2023-11-embed-multilingual-v3](https://huggingface.co/datasets/CohereLabs/wikipedia-2023-11-embed-multilingual-v3) | 0.9446 | 0.5409 | 0.6300 |
|
||||
|
||||
Compared to 1-bit binary quantization, 1-bit TurboQuant offers better recall at equivalent storage budgets, albeit at a lower speed. Similar trends are observed for 1.5-bit and 2-bit configurations.
|
||||
|
||||
We will soon publish an article with detailed numbers, including throughput and indexing times.
|
||||
|
||||
### Get Started with TurboQuant
|
||||
|
||||
In our benchmarks, TurboQuant, at twice the compression ratio of scalar quantization, delivers similar recall and speed. Results vary by dataset and embedding model: it may outperform or slightly underperform scalar quantization. This makes TurboQuant a good default choice for many use cases.
|
||||
|
||||
Compared to binary quantization, TurboQuant offers better recall at lower speed and equivalent storage budgets.
|
||||
|
||||
Benchmark which quantization method performs best on your data and embedding model, and choose the one that fits your needs. To get started with TurboQuant, refer to the [documentation](/documentation/manage-data/quantization/).
|
||||
|
||||
## Memory Monitoring
|
||||
|
||||

|
||||
|
||||
Understanding how much memory a Qdrant collection actually uses has traditionally required cross-referencing OS-level tools, Prometheus gauges, and rough estimates based on collection configuration. There was no straightforward way to see which component (vectors, payload, indexes) was consuming memory, making capacity planning and diagnosing memory pressure difficult.
|
||||
|
||||
This release introduces [collection memory monitoring](/documentation/ops-monitoring/memory-usage/), offering a detailed breakdown of disk, RAM, and OS page cache usage per component, summed across the whole cluster.
|
||||
|
||||
In Web UI, open the collection detail page and select the **Memory** tab to see the memory breakdown.
|
||||
|
||||
<figure>
|
||||
<img width="75%" src="/blog/qdrant-1.18.x/memory-usage.png" alt="The Memory tab showing a breakdown of disk, RAM, cached, and expected cache values per collection component.">
|
||||
<figcaption>
|
||||
The Memory tab shows disk, RAM, and cached usage for each component of the collection.
|
||||
</figcaption>
|
||||
</figure>
|
||||
|
||||
The same data is available [through Qdrant's API](/documentation/ops-monitoring/memory-usage/#api).
|
||||
|
||||
## Adding and Removing Named Vectors
|
||||
|
||||

|
||||
|
||||
When a collection's vector schema needed to change, for example, when adding support for a new embedding model or retiring an old one, there was no way to update it in place. The only option was to recreate the collection from scratch and re-ingest all points.
|
||||
|
||||
Version 1.18 makes it possible to [add and remove named vectors](/documentation/manage-data/collections/#update-vectors) to an existing collection's schema without having to recreate it. This makes embedding model migration considerably easier. You can now add a new vector field, populate it in the background, and remove the old one when you're ready.
|
||||
|
||||
## Audit Logging Improvements
|
||||
|
||||

|
||||
|
||||
[Audit logging](/documentation/security/#audit-logging) was introduced in Qdrant 1.17 to track API operations. Version 1.18 adds two improvements: a new API endpoint to query audit logs, and support for attaching tracing IDs to requests.
|
||||
|
||||
### Query Audit Logs
|
||||
|
||||
Audit logs were previously only accessible as files on disk, which meant reviewing them required direct server access. There was no way to easily search, filter, or aggregate log entries, making security reviews and compliance audits labor-intensive.
|
||||
|
||||
Version 1.18 introduces a [new query audit logs API endpoint](/documentation/security/#query-audit-logs). It returns log entries aggregated across all nodes in a cluster, with each entry covering the timestamp, API method, authentication type, access result, and client details. You can filter results by time range or by any field value.
|
||||
|
||||
### Request Tracing IDs
|
||||
|
||||
When an audit log entry records a denied request or an unexpected operation, it can be hard to link that entry back to the client-side request that triggered it, making incident response and debugging harder than it needs to be.
|
||||
|
||||
This release adds support for [request tracing IDs](/documentation/security/#audit-logging). Attach a tracing ID to any request by passing it in the `x-request-id`, `x-tracing-id`, or `traceparent` header. Qdrant records the tracing ID in the corresponding audit log entry, enabling you to correlate client-side and server-side logs.
|
||||
|
||||
## Per-Collection API Metrics
|
||||
|
||||

|
||||
|
||||
Qdrant's `/metrics` endpoint exposes REST and gRPC response metrics, but they were aggregated across all collections. When response times spiked or error rates climbed, there was no easy way to identify which collection was responsible.
|
||||
|
||||
A [community contribution](https://github.com/qdrant/qdrant/pull/8214) to version 1.18 adds a [`?per_collection=true` parameter](/documentation/ops-monitoring/monitoring/#per-collection-api-metrics) to the `/metrics` endpoint. When set, the `rest_responses_*` and `grpc_responses_*` metrics include a `collection` label, giving you a per-collection breakdown of request counts, failure counts, and response durations.
|
||||
|
||||
## New Strict Mode Guardrails
|
||||
|
||||

|
||||
|
||||
[Strict mode](/documentation/ops-configuration/administration/#strict-mode) lets administrators set guardrails to prevent inefficient API requests from overloading your system. Version 1.18 adds two new guardrails to strict mode:
|
||||
|
||||
**`max_resident_memory_percent`**: Rejects memory-consuming write operations when the process's resident memory exceeds the specified percentage of total system memory. This protects against out-of-memory situations under sustained data ingestion.
|
||||
|
||||
**`search_max_batchsize`**: Caps the number of queries allowed in a single batch search request, preventing oversized batches from degrading other workloads running on the same node.
|
||||
|
||||
## Full Change Log
|
||||
|
||||

|
||||
|
||||
For a full list of all changes in version 1.18, refer to the [change log](https://github.com/qdrant/qdrant/releases/tag/v1.18.0).
|
||||
|
||||
## Upgrading to Version 1.18
|
||||
|
||||

|
||||
|
||||
On Qdrant Cloud, navigate to the Cluster Details screen and select Version 1.18 from the dropdown menu. The upgrade process may take a few moments.
|
||||
|
||||
We recommend upgrading versions one by one. On Qdrant Cloud, this is done automatically when you select the target version. If you're self-hosting, upgrade to the latest patch version of each intermediate minor version first, for example 1.16.x→1.17.x→1.18.0.
|
||||
|
||||
## Engage
|
||||
|
||||

|
||||
|
||||
We would love to hear your thoughts on this release. If you have any questions or feedback, join our [Discord](https://discord.gg/qdrant) or create an issue on [GitHub](https://github.com/qdrant/qdrant/issues).
|
||||
+1
@@ -0,0 +1 @@
|
||||
Query the audit log with time range and exact-match filters.
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
curl -X POST 'https://YOUR-CLUSTER-URL:6333/audit/logs' \
|
||||
-H 'api-key: QDRANT_API_KEY' \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{
|
||||
"limit": 50,
|
||||
"time_from": "2026-03-26T00:00:00Z",
|
||||
"time_to": "2026-03-27T00:00:00Z",
|
||||
"filters": {
|
||||
"result": "denied",
|
||||
"collection": "my_collection"
|
||||
}
|
||||
}'
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
```bash
|
||||
curl -X POST 'https://YOUR-CLUSTER-URL:6333/audit/logs' \
|
||||
-H 'api-key: QDRANT_API_KEY' \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{
|
||||
"limit": 50,
|
||||
"time_from": "2026-03-26T00:00:00Z",
|
||||
"time_to": "2026-03-27T00:00:00Z",
|
||||
"filters": {
|
||||
"result": "denied",
|
||||
"collection": "my_collection"
|
||||
}
|
||||
}'
|
||||
```
|
||||
+1
@@ -0,0 +1 @@
|
||||
Query the audit log via the REST API.
|
||||
@@ -0,0 +1,4 @@
|
||||
curl -X POST 'https://YOUR-CLUSTER-URL:6333/audit/logs' \
|
||||
-H 'api-key: QDRANT_API_KEY' \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{}'
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
```bash
|
||||
curl -X POST 'https://YOUR-CLUSTER-URL:6333/audit/logs' \
|
||||
-H 'api-key: QDRANT_API_KEY' \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{}'
|
||||
```
|
||||
+1
@@ -0,0 +1 @@
|
||||
Attach a tracing ID to a request so it appears in the audit log entry for that request.
|
||||
@@ -0,0 +1,3 @@
|
||||
curl -X GET http://localhost:6333/collections \
|
||||
--header 'api-key: your_api_key_here' \
|
||||
--header 'x-request-id: my-trace-id'
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
using Qdrant.Client;
|
||||
|
||||
public class Snippet
|
||||
{
|
||||
public static async Task Run()
|
||||
{
|
||||
// @hide-start
|
||||
var client = new QdrantClient("localhost", 6334);
|
||||
// @hide-end
|
||||
|
||||
using (RequestHeaders.Use("x-request-id", "my-trace-id"))
|
||||
await client.ListCollectionsAsync();
|
||||
}
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
```bash
|
||||
curl -X GET http://localhost:6333/collections \
|
||||
--header 'api-key: your_api_key_here' \
|
||||
--header 'x-request-id: my-trace-id'
|
||||
```
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
```csharp
|
||||
using Qdrant.Client;
|
||||
|
||||
using (RequestHeaders.Use("x-request-id", "my-trace-id"))
|
||||
await client.ListCollectionsAsync();
|
||||
```
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
```go
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/qdrant/go-client/qdrant"
|
||||
)
|
||||
|
||||
ctx := qdrant.WithHeader(context.Background(), "x-request-id", "my-trace-id")
|
||||
client.ListCollections(ctx)
|
||||
```
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
```java
|
||||
import io.qdrant.client.QdrantClient;
|
||||
import io.qdrant.client.QdrantGrpcClient;
|
||||
import io.qdrant.client.RequestHeaders;
|
||||
import io.grpc.Context;
|
||||
|
||||
Context ctx = RequestHeaders.withHeader(Context.current(), "x-request-id", "my-trace-id");
|
||||
ctx.run(() -> client.listCollectionsAsync());
|
||||
```
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
```python
|
||||
from qdrant_client import QdrantClient
|
||||
from qdrant_client.context_headers import headers
|
||||
|
||||
with headers({"x-request-id": "my-trace-id"}):
|
||||
client.get_collections()
|
||||
```
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
```rust
|
||||
use qdrant_client::Qdrant;
|
||||
|
||||
client
|
||||
.with_header("x-request-id", "my-trace-id")
|
||||
.list_collections()
|
||||
.await?;
|
||||
```
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
```typescript
|
||||
import { QdrantClient, withHeaders } from "@qdrant/js-client-rest";
|
||||
|
||||
const result = await withHeaders({ "x-request-id": "my-trace-id" }, () =>
|
||||
client.getCollections()
|
||||
);
|
||||
```
|
||||
@@ -0,0 +1,17 @@
|
||||
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
|
||||
|
||||
ctx := qdrant.WithHeader(context.Background(), "x-request-id", "my-trace-id")
|
||||
client.ListCollections(ctx)
|
||||
}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
package com.example.snippets_amalgamation;
|
||||
|
||||
import io.qdrant.client.QdrantClient;
|
||||
import io.qdrant.client.QdrantGrpcClient;
|
||||
import io.qdrant.client.RequestHeaders;
|
||||
import io.grpc.Context;
|
||||
|
||||
public class Snippet {
|
||||
public static void run() throws Exception {
|
||||
// @hide-start
|
||||
QdrantClient client = new QdrantClient(
|
||||
QdrantGrpcClient.newBuilder("localhost", 6334, false).build());
|
||||
// @hide-end
|
||||
|
||||
Context ctx = RequestHeaders.withHeader(Context.current(), "x-request-id", "my-trace-id");
|
||||
ctx.run(() -> client.listCollectionsAsync());
|
||||
}
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
from qdrant_client import QdrantClient
|
||||
from qdrant_client.context_headers import headers
|
||||
|
||||
client = QdrantClient(url="http://localhost:6333") # @hide
|
||||
|
||||
with headers({"x-request-id": "my-trace-id"}):
|
||||
client.get_collections()
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
use qdrant_client::Qdrant;
|
||||
|
||||
pub async fn main() -> anyhow::Result<()> {
|
||||
let client = Qdrant::from_url("http://localhost:6334").build()?; // @hide
|
||||
|
||||
client
|
||||
.with_header("x-request-id", "my-trace-id")
|
||||
.list_collections()
|
||||
.await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
import { QdrantClient, withHeaders } from "@qdrant/js-client-rest";
|
||||
|
||||
const client = new QdrantClient({ host: "localhost", port: 6333 }); // @hide
|
||||
|
||||
const result = await withHeaders({ "x-request-id": "my-trace-id" }, () =>
|
||||
client.getCollections()
|
||||
);
|
||||
+1
@@ -0,0 +1 @@
|
||||
This code creates a collection with TurboQuant using 2-bit encoding. Specify `bits` to select the compression level. Available values are `bits4` (default, 8× compression), `bits2` (16× compression), `bits1_5` (24× compression), and `bits1` (32× compression).
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
using Qdrant.Client;
|
||||
using Qdrant.Client.Grpc;
|
||||
|
||||
public class Snippet
|
||||
{
|
||||
public static async Task Run()
|
||||
{
|
||||
// @hide-start
|
||||
var client = new QdrantClient("localhost", 6334);
|
||||
// @hide-end
|
||||
|
||||
await client.CreateCollectionAsync(
|
||||
collectionName: "{collection_name}",
|
||||
vectorsConfig: new VectorParams { Size = 1536, Distance = Distance.Cosine },
|
||||
quantizationConfig: new QuantizationConfig
|
||||
{
|
||||
Turboquant = new TurboQuantization { AlwaysRam = true, Bits = TurboQuantBitSize.Bits2 }
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
```csharp
|
||||
using Qdrant.Client;
|
||||
using Qdrant.Client.Grpc;
|
||||
|
||||
await client.CreateCollectionAsync(
|
||||
collectionName: "{collection_name}",
|
||||
vectorsConfig: new VectorParams { Size = 1536, Distance = Distance.Cosine },
|
||||
quantizationConfig: new QuantizationConfig
|
||||
{
|
||||
Turboquant = new TurboQuantization { AlwaysRam = true, Bits = TurboQuantBitSize.Bits2 }
|
||||
}
|
||||
);
|
||||
```
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
```go
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/qdrant/go-client/qdrant"
|
||||
)
|
||||
|
||||
client.CreateCollection(context.Background(), &qdrant.CreateCollection{
|
||||
CollectionName: "{collection_name}",
|
||||
VectorsConfig: qdrant.NewVectorsConfig(&qdrant.VectorParams{
|
||||
Size: 1536,
|
||||
Distance: qdrant.Distance_Cosine,
|
||||
}),
|
||||
QuantizationConfig: qdrant.NewQuantizationTurbo(
|
||||
&qdrant.TurboQuantization{
|
||||
AlwaysRam: qdrant.PtrOf(true),
|
||||
Bits: qdrant.TurboQuantBitSize_Bits2.Enum(),
|
||||
},
|
||||
),
|
||||
})
|
||||
```
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
```java
|
||||
import io.qdrant.client.QdrantClient;
|
||||
import io.qdrant.client.QdrantGrpcClient;
|
||||
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.TurboQuantBitSize;
|
||||
import io.qdrant.client.grpc.Collections.TurboQuantization;
|
||||
import io.qdrant.client.grpc.Collections.VectorParams;
|
||||
import io.qdrant.client.grpc.Collections.VectorsConfig;
|
||||
|
||||
client
|
||||
.createCollectionAsync(
|
||||
CreateCollection.newBuilder()
|
||||
.setCollectionName("{collection_name}")
|
||||
.setVectorsConfig(
|
||||
VectorsConfig.newBuilder()
|
||||
.setParams(
|
||||
VectorParams.newBuilder()
|
||||
.setSize(1536)
|
||||
.setDistance(Distance.Cosine)
|
||||
.build())
|
||||
.build())
|
||||
.setQuantizationConfig(
|
||||
QuantizationConfig.newBuilder()
|
||||
.setTurboquant(
|
||||
TurboQuantization.newBuilder()
|
||||
.setAlwaysRam(true)
|
||||
.setBits(TurboQuantBitSize.Bits2)
|
||||
.build())
|
||||
.build())
|
||||
.build())
|
||||
.get();
|
||||
```
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
```python
|
||||
from qdrant_client import QdrantClient, models
|
||||
|
||||
client.create_collection(
|
||||
collection_name="{collection_name}",
|
||||
vectors_config=models.VectorParams(size=1536, distance=models.Distance.COSINE),
|
||||
quantization_config=models.TurboQuantization(
|
||||
turbo=models.TurboQuantQuantizationConfig(
|
||||
always_ram=True,
|
||||
bits=models.TurboQuantBitSize.BITS2,
|
||||
),
|
||||
),
|
||||
)
|
||||
```
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
```rust
|
||||
use qdrant_client::qdrant::{
|
||||
CreateCollectionBuilder, Distance, TurboQuantBitSize, TurboQuantizationBuilder,
|
||||
VectorParamsBuilder,
|
||||
};
|
||||
use qdrant_client::Qdrant;
|
||||
|
||||
client
|
||||
.create_collection(
|
||||
CreateCollectionBuilder::new("{collection_name}")
|
||||
.vectors_config(VectorParamsBuilder::new(1536, Distance::Cosine))
|
||||
.quantization_config(
|
||||
TurboQuantizationBuilder::new()
|
||||
.always_ram(true)
|
||||
.bits(TurboQuantBitSize::Bits2),
|
||||
),
|
||||
)
|
||||
.await?;
|
||||
```
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
```typescript
|
||||
import { QdrantClient } from "@qdrant/js-client-rest";
|
||||
|
||||
client.createCollection("{collection_name}", {
|
||||
vectors: {
|
||||
size: 1536,
|
||||
distance: "Cosine",
|
||||
},
|
||||
quantization_config: {
|
||||
turbo: {
|
||||
always_ram: true,
|
||||
bits: "bits2",
|
||||
},
|
||||
},
|
||||
});
|
||||
```
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
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.CreateCollection(context.Background(), &qdrant.CreateCollection{
|
||||
CollectionName: "{collection_name}",
|
||||
VectorsConfig: qdrant.NewVectorsConfig(&qdrant.VectorParams{
|
||||
Size: 1536,
|
||||
Distance: qdrant.Distance_Cosine,
|
||||
}),
|
||||
QuantizationConfig: qdrant.NewQuantizationTurbo(
|
||||
&qdrant.TurboQuantization{
|
||||
AlwaysRam: qdrant.PtrOf(true),
|
||||
Bits: qdrant.TurboQuantBitSize_Bits2.Enum(),
|
||||
},
|
||||
),
|
||||
})
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
```http
|
||||
PUT /collections/{collection_name}
|
||||
{
|
||||
"vectors": {
|
||||
"size": 1536,
|
||||
"distance": "Cosine"
|
||||
},
|
||||
"quantization_config": {
|
||||
"turbo": {
|
||||
"bits": "bits2",
|
||||
"always_ram": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
package com.example.snippets_amalgamation;
|
||||
|
||||
import io.qdrant.client.QdrantClient;
|
||||
import io.qdrant.client.QdrantGrpcClient;
|
||||
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.TurboQuantBitSize;
|
||||
import io.qdrant.client.grpc.Collections.TurboQuantization;
|
||||
import io.qdrant.client.grpc.Collections.VectorParams;
|
||||
import io.qdrant.client.grpc.Collections.VectorsConfig;
|
||||
|
||||
public class Snippet {
|
||||
public static void run() throws Exception {
|
||||
// @hide-start
|
||||
QdrantClient client =
|
||||
new QdrantClient(QdrantGrpcClient.newBuilder("localhost", 6334, false).build());
|
||||
// @hide-end
|
||||
|
||||
client
|
||||
.createCollectionAsync(
|
||||
CreateCollection.newBuilder()
|
||||
.setCollectionName("{collection_name}")
|
||||
.setVectorsConfig(
|
||||
VectorsConfig.newBuilder()
|
||||
.setParams(
|
||||
VectorParams.newBuilder()
|
||||
.setSize(1536)
|
||||
.setDistance(Distance.Cosine)
|
||||
.build())
|
||||
.build())
|
||||
.setQuantizationConfig(
|
||||
QuantizationConfig.newBuilder()
|
||||
.setTurboquant(
|
||||
TurboQuantization.newBuilder()
|
||||
.setAlwaysRam(true)
|
||||
.setBits(TurboQuantBitSize.Bits2)
|
||||
.build())
|
||||
.build())
|
||||
.build())
|
||||
.get();
|
||||
}
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
from qdrant_client import QdrantClient, models
|
||||
|
||||
# @hide-start
|
||||
client = QdrantClient(url="http://localhost:6333")
|
||||
# @hide-end
|
||||
|
||||
client.create_collection(
|
||||
collection_name="{collection_name}",
|
||||
vectors_config=models.VectorParams(size=1536, distance=models.Distance.COSINE),
|
||||
quantization_config=models.TurboQuantization(
|
||||
turbo=models.TurboQuantQuantizationConfig(
|
||||
always_ram=True,
|
||||
bits=models.TurboQuantBitSize.BITS2,
|
||||
),
|
||||
),
|
||||
)
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
use qdrant_client::qdrant::{
|
||||
CreateCollectionBuilder, Distance, TurboQuantBitSize, TurboQuantizationBuilder,
|
||||
VectorParamsBuilder,
|
||||
};
|
||||
use qdrant_client::Qdrant;
|
||||
|
||||
pub async fn main() -> anyhow::Result<()> {
|
||||
// @hide-start
|
||||
let client = Qdrant::from_url("http://localhost:6334").build()?;
|
||||
// @hide-end
|
||||
|
||||
client
|
||||
.create_collection(
|
||||
CreateCollectionBuilder::new("{collection_name}")
|
||||
.vectors_config(VectorParamsBuilder::new(1536, Distance::Cosine))
|
||||
.quantization_config(
|
||||
TurboQuantizationBuilder::new()
|
||||
.always_ram(true)
|
||||
.bits(TurboQuantBitSize::Bits2),
|
||||
),
|
||||
)
|
||||
.await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
import { QdrantClient } from "@qdrant/js-client-rest";
|
||||
|
||||
// @hide-start
|
||||
const client = new QdrantClient({ host: "localhost", port: 6333 });
|
||||
// @hide-end
|
||||
|
||||
client.createCollection("{collection_name}", {
|
||||
vectors: {
|
||||
size: 1536,
|
||||
distance: "Cosine",
|
||||
},
|
||||
quantization_config: {
|
||||
turbo: {
|
||||
always_ram: true,
|
||||
bits: "bits2",
|
||||
},
|
||||
},
|
||||
});
|
||||
+1
@@ -0,0 +1 @@
|
||||
This code creates a collection with TurboQuant enabled using the default 4-bit encoding. To enable TurboQuant on an existing collection, use a PATCH request or the `update_collection` method and omit the vector configuration.
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
using Qdrant.Client;
|
||||
using Qdrant.Client.Grpc;
|
||||
|
||||
public class Snippet
|
||||
{
|
||||
public static async Task Run()
|
||||
{
|
||||
// @hide-start
|
||||
var client = new QdrantClient("localhost", 6334);
|
||||
// @hide-end
|
||||
|
||||
await client.CreateCollectionAsync(
|
||||
collectionName: "{collection_name}",
|
||||
vectorsConfig: new VectorParams { Size = 1536, Distance = Distance.Cosine },
|
||||
quantizationConfig: new QuantizationConfig
|
||||
{
|
||||
Turboquant = new TurboQuantization { AlwaysRam = true }
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
```csharp
|
||||
using Qdrant.Client;
|
||||
using Qdrant.Client.Grpc;
|
||||
|
||||
await client.CreateCollectionAsync(
|
||||
collectionName: "{collection_name}",
|
||||
vectorsConfig: new VectorParams { Size = 1536, Distance = Distance.Cosine },
|
||||
quantizationConfig: new QuantizationConfig
|
||||
{
|
||||
Turboquant = new TurboQuantization { AlwaysRam = true }
|
||||
}
|
||||
);
|
||||
```
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
```go
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/qdrant/go-client/qdrant"
|
||||
)
|
||||
|
||||
client.CreateCollection(context.Background(), &qdrant.CreateCollection{
|
||||
CollectionName: "{collection_name}",
|
||||
VectorsConfig: qdrant.NewVectorsConfig(&qdrant.VectorParams{
|
||||
Size: 1536,
|
||||
Distance: qdrant.Distance_Cosine,
|
||||
}),
|
||||
QuantizationConfig: qdrant.NewQuantizationTurbo(
|
||||
&qdrant.TurboQuantization{
|
||||
AlwaysRam: qdrant.PtrOf(true),
|
||||
},
|
||||
),
|
||||
})
|
||||
```
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
```java
|
||||
import io.qdrant.client.QdrantClient;
|
||||
import io.qdrant.client.QdrantGrpcClient;
|
||||
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.TurboQuantization;
|
||||
import io.qdrant.client.grpc.Collections.VectorParams;
|
||||
import io.qdrant.client.grpc.Collections.VectorsConfig;
|
||||
|
||||
client
|
||||
.createCollectionAsync(
|
||||
CreateCollection.newBuilder()
|
||||
.setCollectionName("{collection_name}")
|
||||
.setVectorsConfig(
|
||||
VectorsConfig.newBuilder()
|
||||
.setParams(
|
||||
VectorParams.newBuilder()
|
||||
.setSize(1536)
|
||||
.setDistance(Distance.Cosine)
|
||||
.build())
|
||||
.build())
|
||||
.setQuantizationConfig(
|
||||
QuantizationConfig.newBuilder()
|
||||
.setTurboquant(TurboQuantization.newBuilder().setAlwaysRam(true).build())
|
||||
.build())
|
||||
.build())
|
||||
.get();
|
||||
```
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
```python
|
||||
from qdrant_client import QdrantClient, models
|
||||
|
||||
client.create_collection(
|
||||
collection_name="{collection_name}",
|
||||
vectors_config=models.VectorParams(size=1536, distance=models.Distance.COSINE),
|
||||
quantization_config=models.TurboQuantization(
|
||||
turbo=models.TurboQuantQuantizationConfig(
|
||||
always_ram=True,
|
||||
),
|
||||
),
|
||||
)
|
||||
```
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
```rust
|
||||
use qdrant_client::qdrant::{
|
||||
CreateCollectionBuilder, Distance, TurboQuantizationBuilder, VectorParamsBuilder,
|
||||
};
|
||||
use qdrant_client::Qdrant;
|
||||
|
||||
client
|
||||
.create_collection(
|
||||
CreateCollectionBuilder::new("{collection_name}")
|
||||
.vectors_config(VectorParamsBuilder::new(1536, Distance::Cosine))
|
||||
.quantization_config(TurboQuantizationBuilder::new().always_ram(true)),
|
||||
)
|
||||
.await?;
|
||||
```
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
```typescript
|
||||
import { QdrantClient } from "@qdrant/js-client-rest";
|
||||
|
||||
client.createCollection("{collection_name}", {
|
||||
vectors: {
|
||||
size: 1536,
|
||||
distance: "Cosine",
|
||||
},
|
||||
quantization_config: {
|
||||
turbo: {
|
||||
always_ram: true,
|
||||
},
|
||||
},
|
||||
});
|
||||
```
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
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.CreateCollection(context.Background(), &qdrant.CreateCollection{
|
||||
CollectionName: "{collection_name}",
|
||||
VectorsConfig: qdrant.NewVectorsConfig(&qdrant.VectorParams{
|
||||
Size: 1536,
|
||||
Distance: qdrant.Distance_Cosine,
|
||||
}),
|
||||
QuantizationConfig: qdrant.NewQuantizationTurbo(
|
||||
&qdrant.TurboQuantization{
|
||||
AlwaysRam: qdrant.PtrOf(true),
|
||||
},
|
||||
),
|
||||
})
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
```http
|
||||
PUT /collections/{collection_name}
|
||||
{
|
||||
"vectors": {
|
||||
"size": 1536,
|
||||
"distance": "Cosine"
|
||||
},
|
||||
"quantization_config": {
|
||||
"turbo": {
|
||||
"always_ram": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
package com.example.snippets_amalgamation;
|
||||
|
||||
import io.qdrant.client.QdrantClient;
|
||||
import io.qdrant.client.QdrantGrpcClient;
|
||||
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.TurboQuantization;
|
||||
import io.qdrant.client.grpc.Collections.VectorParams;
|
||||
import io.qdrant.client.grpc.Collections.VectorsConfig;
|
||||
|
||||
public class Snippet {
|
||||
public static void run() throws Exception {
|
||||
// @hide-start
|
||||
QdrantClient client =
|
||||
new QdrantClient(QdrantGrpcClient.newBuilder("localhost", 6334, false).build());
|
||||
// @hide-end
|
||||
|
||||
client
|
||||
.createCollectionAsync(
|
||||
CreateCollection.newBuilder()
|
||||
.setCollectionName("{collection_name}")
|
||||
.setVectorsConfig(
|
||||
VectorsConfig.newBuilder()
|
||||
.setParams(
|
||||
VectorParams.newBuilder()
|
||||
.setSize(1536)
|
||||
.setDistance(Distance.Cosine)
|
||||
.build())
|
||||
.build())
|
||||
.setQuantizationConfig(
|
||||
QuantizationConfig.newBuilder()
|
||||
.setTurboquant(TurboQuantization.newBuilder().setAlwaysRam(true).build())
|
||||
.build())
|
||||
.build())
|
||||
.get();
|
||||
}
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
from qdrant_client import QdrantClient, models
|
||||
|
||||
# @hide-start
|
||||
client = QdrantClient(url="http://localhost:6333")
|
||||
# @hide-end
|
||||
|
||||
client.create_collection(
|
||||
collection_name="{collection_name}",
|
||||
vectors_config=models.VectorParams(size=1536, distance=models.Distance.COSINE),
|
||||
quantization_config=models.TurboQuantization(
|
||||
turbo=models.TurboQuantQuantizationConfig(
|
||||
always_ram=True,
|
||||
),
|
||||
),
|
||||
)
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
use qdrant_client::qdrant::{
|
||||
CreateCollectionBuilder, Distance, TurboQuantizationBuilder, VectorParamsBuilder,
|
||||
};
|
||||
use qdrant_client::Qdrant;
|
||||
|
||||
pub async fn main() -> anyhow::Result<()> {
|
||||
// @hide-start
|
||||
let client = Qdrant::from_url("http://localhost:6334").build()?;
|
||||
// @hide-end
|
||||
|
||||
client
|
||||
.create_collection(
|
||||
CreateCollectionBuilder::new("{collection_name}")
|
||||
.vectors_config(VectorParamsBuilder::new(1536, Distance::Cosine))
|
||||
.quantization_config(TurboQuantizationBuilder::new().always_ram(true)),
|
||||
)
|
||||
.await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
import { QdrantClient } from "@qdrant/js-client-rest";
|
||||
|
||||
// @hide-start
|
||||
const client = new QdrantClient({ host: "localhost", port: 6333 });
|
||||
// @hide-end
|
||||
|
||||
client.createCollection("{collection_name}", {
|
||||
vectors: {
|
||||
size: 1536,
|
||||
distance: "Cosine",
|
||||
},
|
||||
quantization_config: {
|
||||
turbo: {
|
||||
always_ram: true,
|
||||
},
|
||||
},
|
||||
});
|
||||
+1
@@ -0,0 +1 @@
|
||||
Create a new dense named vector on an existing collection. Only the immutable vector-space properties are required: size and distance. Storage type, index, and quantization can be configured separately afterward.
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
using Qdrant.Client;
|
||||
using Qdrant.Client.Grpc;
|
||||
|
||||
public class Snippet
|
||||
{
|
||||
public static async Task Run()
|
||||
{
|
||||
// @hide-start
|
||||
var client = new QdrantClient("localhost", 6334);
|
||||
// @hide-end
|
||||
|
||||
await client.CreateVectorNameAsync(new()
|
||||
{
|
||||
CollectionName = "{collection_name}",
|
||||
VectorName = "{vector_name}",
|
||||
DenseConfig = new() { Size = 256, Distance = Distance.Cosine }
|
||||
});
|
||||
}
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
```csharp
|
||||
using Qdrant.Client;
|
||||
using Qdrant.Client.Grpc;
|
||||
|
||||
await client.CreateVectorNameAsync(new()
|
||||
{
|
||||
CollectionName = "{collection_name}",
|
||||
VectorName = "{vector_name}",
|
||||
DenseConfig = new() { Size = 256, Distance = Distance.Cosine }
|
||||
});
|
||||
```
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
```go
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/qdrant/go-client/qdrant"
|
||||
)
|
||||
|
||||
client.CreateVectorName(context.Background(), &qdrant.CreateVectorNameRequest{
|
||||
CollectionName: "{collection_name}",
|
||||
VectorName: "{vector_name}",
|
||||
VectorConfig: &qdrant.CreateVectorNameRequest_DenseConfig{
|
||||
DenseConfig: &qdrant.DenseVectorCreationConfig{
|
||||
Size: 256,
|
||||
Distance: qdrant.Distance_Cosine,
|
||||
},
|
||||
},
|
||||
})
|
||||
```
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
```java
|
||||
import io.qdrant.client.QdrantClient;
|
||||
import io.qdrant.client.QdrantGrpcClient;
|
||||
import io.qdrant.client.grpc.Collections.Distance;
|
||||
import io.qdrant.client.grpc.Points.CreateVectorNameRequest;
|
||||
import io.qdrant.client.grpc.Points.DenseVectorCreationConfig;
|
||||
|
||||
client
|
||||
.createVectorNameAsync(
|
||||
CreateVectorNameRequest.newBuilder()
|
||||
.setCollectionName("{collection_name}")
|
||||
.setVectorName("{vector_name}")
|
||||
.setDenseConfig(
|
||||
DenseVectorCreationConfig.newBuilder()
|
||||
.setSize(256)
|
||||
.setDistance(Distance.Cosine)
|
||||
.build())
|
||||
.build())
|
||||
.get();
|
||||
```
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
```python
|
||||
client.create_vector_name(
|
||||
collection_name="{collection_name}",
|
||||
vector_name="{vector_name}",
|
||||
vector_name_config=models.DenseVectorNameConfig(
|
||||
dense=models.DenseVectorConfig(
|
||||
size=256,
|
||||
distance=models.Distance.COSINE,
|
||||
),
|
||||
),
|
||||
)
|
||||
```
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
```rust
|
||||
use qdrant_client::qdrant::{
|
||||
CreateVectorNameRequestBuilder, DenseVectorCreationConfigBuilder, Distance,
|
||||
};
|
||||
use qdrant_client::Qdrant;
|
||||
|
||||
client
|
||||
.create_vector_name(
|
||||
CreateVectorNameRequestBuilder::new(
|
||||
"{collection_name}",
|
||||
"{vector_name}",
|
||||
DenseVectorCreationConfigBuilder::new(256, Distance::Cosine),
|
||||
),
|
||||
)
|
||||
.await?;
|
||||
```
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
```typescript
|
||||
client.createVectorName("{collection_name}", "{vector_name}", {
|
||||
dense: {
|
||||
size: 256,
|
||||
distance: "Cosine",
|
||||
},
|
||||
});
|
||||
```
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
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.CreateVectorName(context.Background(), &qdrant.CreateVectorNameRequest{
|
||||
CollectionName: "{collection_name}",
|
||||
VectorName: "{vector_name}",
|
||||
VectorConfig: &qdrant.CreateVectorNameRequest_DenseConfig{
|
||||
DenseConfig: &qdrant.DenseVectorCreationConfig{
|
||||
Size: 256,
|
||||
Distance: qdrant.Distance_Cosine,
|
||||
},
|
||||
},
|
||||
})
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
```http
|
||||
PUT /collections/{collection_name}/vectors/{vector_name}
|
||||
{
|
||||
"dense": {
|
||||
"size": 256,
|
||||
"distance": "Cosine"
|
||||
}
|
||||
}
|
||||
```
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
package com.example.snippets_amalgamation;
|
||||
|
||||
import io.qdrant.client.QdrantClient;
|
||||
import io.qdrant.client.QdrantGrpcClient;
|
||||
import io.qdrant.client.grpc.Collections.Distance;
|
||||
import io.qdrant.client.grpc.Points.CreateVectorNameRequest;
|
||||
import io.qdrant.client.grpc.Points.DenseVectorCreationConfig;
|
||||
|
||||
public class Snippet {
|
||||
public static void run() throws Exception {
|
||||
// @hide-start
|
||||
QdrantClient client =
|
||||
new QdrantClient(QdrantGrpcClient.newBuilder("localhost", 6334, false).build());
|
||||
// @hide-end
|
||||
|
||||
client
|
||||
.createVectorNameAsync(
|
||||
CreateVectorNameRequest.newBuilder()
|
||||
.setCollectionName("{collection_name}")
|
||||
.setVectorName("{vector_name}")
|
||||
.setDenseConfig(
|
||||
DenseVectorCreationConfig.newBuilder()
|
||||
.setSize(256)
|
||||
.setDistance(Distance.Cosine)
|
||||
.build())
|
||||
.build())
|
||||
.get();
|
||||
}
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
from qdrant_client import QdrantClient, models # @hide
|
||||
|
||||
client = QdrantClient(url="http://localhost:6333") # @hide
|
||||
|
||||
client.create_vector_name(
|
||||
collection_name="{collection_name}",
|
||||
vector_name="{vector_name}",
|
||||
vector_name_config=models.DenseVectorNameConfig(
|
||||
dense=models.DenseVectorConfig(
|
||||
size=256,
|
||||
distance=models.Distance.COSINE,
|
||||
),
|
||||
),
|
||||
)
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
use qdrant_client::qdrant::{
|
||||
CreateVectorNameRequestBuilder, DenseVectorCreationConfigBuilder, Distance,
|
||||
};
|
||||
use qdrant_client::Qdrant;
|
||||
|
||||
pub async fn main() -> anyhow::Result<()> {
|
||||
// @hide-start
|
||||
let client = Qdrant::from_url("http://localhost:6334").build()?;
|
||||
// @hide-end
|
||||
|
||||
client
|
||||
.create_vector_name(
|
||||
CreateVectorNameRequestBuilder::new(
|
||||
"{collection_name}",
|
||||
"{vector_name}",
|
||||
DenseVectorCreationConfigBuilder::new(256, Distance::Cosine),
|
||||
),
|
||||
)
|
||||
.await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
import { QdrantClient } from "@qdrant/js-client-rest"; // @hide
|
||||
|
||||
const client = new QdrantClient({ host: "localhost", port: 6333 }); // @hide
|
||||
|
||||
client.createVectorName("{collection_name}", "{vector_name}", {
|
||||
dense: {
|
||||
size: 256,
|
||||
distance: "Cosine",
|
||||
},
|
||||
});
|
||||
+1
@@ -0,0 +1 @@
|
||||
Create a new sparse named vector on an existing collection. Only the immutable vector-space properties are required. Storage type, index, and quantization can be configured separately afterward.
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
using Qdrant.Client;
|
||||
using Qdrant.Client.Grpc;
|
||||
|
||||
public class Snippet
|
||||
{
|
||||
public static async Task Run()
|
||||
{
|
||||
// @hide-start
|
||||
var client = new QdrantClient("localhost", 6334);
|
||||
// @hide-end
|
||||
|
||||
await client.CreateVectorNameAsync(new()
|
||||
{
|
||||
CollectionName = "{collection_name}",
|
||||
VectorName = "{vector_name}",
|
||||
SparseConfig = new() { Modifier = Modifier.Idf }
|
||||
});
|
||||
}
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
```csharp
|
||||
using Qdrant.Client;
|
||||
using Qdrant.Client.Grpc;
|
||||
|
||||
await client.CreateVectorNameAsync(new()
|
||||
{
|
||||
CollectionName = "{collection_name}",
|
||||
VectorName = "{vector_name}",
|
||||
SparseConfig = new() { Modifier = Modifier.Idf }
|
||||
});
|
||||
```
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
```go
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/qdrant/go-client/qdrant"
|
||||
)
|
||||
|
||||
client.CreateVectorName(context.Background(), &qdrant.CreateVectorNameRequest{
|
||||
CollectionName: "{collection_name}",
|
||||
VectorName: "{vector_name}",
|
||||
VectorConfig: &qdrant.CreateVectorNameRequest_SparseConfig{
|
||||
SparseConfig: &qdrant.SparseVectorCreationConfig{
|
||||
Modifier: qdrant.Modifier_Idf.Enum(),
|
||||
},
|
||||
},
|
||||
})
|
||||
```
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
```java
|
||||
import io.qdrant.client.QdrantClient;
|
||||
import io.qdrant.client.QdrantGrpcClient;
|
||||
import io.qdrant.client.grpc.Collections.Modifier;
|
||||
import io.qdrant.client.grpc.Points.CreateVectorNameRequest;
|
||||
import io.qdrant.client.grpc.Points.SparseVectorCreationConfig;
|
||||
|
||||
client
|
||||
.createVectorNameAsync(
|
||||
CreateVectorNameRequest.newBuilder()
|
||||
.setCollectionName("{collection_name}")
|
||||
.setVectorName("{vector_name}")
|
||||
.setSparseConfig(
|
||||
SparseVectorCreationConfig.newBuilder()
|
||||
.setModifier(Modifier.Idf)
|
||||
.build())
|
||||
.build())
|
||||
.get();
|
||||
```
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
```python
|
||||
client.create_vector_name(
|
||||
collection_name="{collection_name}",
|
||||
vector_name="{vector_name}",
|
||||
vector_name_config=models.SparseVectorNameConfig(
|
||||
sparse=models.SparseVectorConfig(
|
||||
modifier=models.Modifier.IDF,
|
||||
),
|
||||
),
|
||||
)
|
||||
```
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
```rust
|
||||
use qdrant_client::qdrant::{
|
||||
CreateVectorNameRequestBuilder, Modifier, SparseVectorCreationConfigBuilder,
|
||||
};
|
||||
use qdrant_client::Qdrant;
|
||||
|
||||
client
|
||||
.create_vector_name(
|
||||
CreateVectorNameRequestBuilder::new(
|
||||
"{collection_name}",
|
||||
"{vector_name}",
|
||||
SparseVectorCreationConfigBuilder::new().modifier(Modifier::Idf),
|
||||
),
|
||||
)
|
||||
.await?;
|
||||
```
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
```typescript
|
||||
client.createVectorName("{collection_name}", "{vector_name}", {
|
||||
sparse: {
|
||||
modifier: "idf",
|
||||
},
|
||||
});
|
||||
```
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
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.CreateVectorName(context.Background(), &qdrant.CreateVectorNameRequest{
|
||||
CollectionName: "{collection_name}",
|
||||
VectorName: "{vector_name}",
|
||||
VectorConfig: &qdrant.CreateVectorNameRequest_SparseConfig{
|
||||
SparseConfig: &qdrant.SparseVectorCreationConfig{
|
||||
Modifier: qdrant.Modifier_Idf.Enum(),
|
||||
},
|
||||
},
|
||||
})
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
```http
|
||||
PUT /collections/{collection_name}/vectors/{vector_name}
|
||||
{
|
||||
"sparse": {
|
||||
"modifier": "Idf"
|
||||
}
|
||||
}
|
||||
```
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
package com.example.snippets_amalgamation;
|
||||
|
||||
import io.qdrant.client.QdrantClient;
|
||||
import io.qdrant.client.QdrantGrpcClient;
|
||||
import io.qdrant.client.grpc.Collections.Modifier;
|
||||
import io.qdrant.client.grpc.Points.CreateVectorNameRequest;
|
||||
import io.qdrant.client.grpc.Points.SparseVectorCreationConfig;
|
||||
|
||||
public class Snippet {
|
||||
public static void run() throws Exception {
|
||||
// @hide-start
|
||||
QdrantClient client =
|
||||
new QdrantClient(QdrantGrpcClient.newBuilder("localhost", 6334, false).build());
|
||||
// @hide-end
|
||||
|
||||
client
|
||||
.createVectorNameAsync(
|
||||
CreateVectorNameRequest.newBuilder()
|
||||
.setCollectionName("{collection_name}")
|
||||
.setVectorName("{vector_name}")
|
||||
.setSparseConfig(
|
||||
SparseVectorCreationConfig.newBuilder()
|
||||
.setModifier(Modifier.Idf)
|
||||
.build())
|
||||
.build())
|
||||
.get();
|
||||
}
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
from qdrant_client import QdrantClient, models # @hide
|
||||
|
||||
client = QdrantClient(url="http://localhost:6333") # @hide
|
||||
|
||||
client.create_vector_name(
|
||||
collection_name="{collection_name}",
|
||||
vector_name="{vector_name}",
|
||||
vector_name_config=models.SparseVectorNameConfig(
|
||||
sparse=models.SparseVectorConfig(
|
||||
modifier=models.Modifier.IDF,
|
||||
),
|
||||
),
|
||||
)
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
use qdrant_client::qdrant::{
|
||||
CreateVectorNameRequestBuilder, Modifier, SparseVectorCreationConfigBuilder,
|
||||
};
|
||||
use qdrant_client::Qdrant;
|
||||
|
||||
pub async fn main() -> anyhow::Result<()> {
|
||||
// @hide-start
|
||||
let client = Qdrant::from_url("http://localhost:6334").build()?;
|
||||
// @hide-end
|
||||
|
||||
client
|
||||
.create_vector_name(
|
||||
CreateVectorNameRequestBuilder::new(
|
||||
"{collection_name}",
|
||||
"{vector_name}",
|
||||
SparseVectorCreationConfigBuilder::new().modifier(Modifier::Idf),
|
||||
),
|
||||
)
|
||||
.await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
import { QdrantClient } from "@qdrant/js-client-rest"; // @hide
|
||||
|
||||
const client = new QdrantClient({ host: "localhost", port: 6333 }); // @hide
|
||||
|
||||
client.createVectorName("{collection_name}", "{vector_name}", {
|
||||
sparse: {
|
||||
modifier: "idf",
|
||||
},
|
||||
});
|
||||
+1
@@ -0,0 +1 @@
|
||||
Delete a named vector from an existing collection. This removes the vector schema and all associated data from every segment. Existing points lose this vector field; they are not otherwise affected.
|
||||
@@ -0,0 +1,18 @@
|
||||
using Qdrant.Client;
|
||||
using Qdrant.Client.Grpc;
|
||||
|
||||
public class Snippet
|
||||
{
|
||||
public static async Task Run()
|
||||
{
|
||||
// @hide-start
|
||||
var client = new QdrantClient("localhost", 6334);
|
||||
// @hide-end
|
||||
|
||||
await client.DeleteVectorNameAsync(new()
|
||||
{
|
||||
CollectionName = "{collection_name}",
|
||||
VectorName = "{vector_name}"
|
||||
});
|
||||
}
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
```csharp
|
||||
using Qdrant.Client;
|
||||
using Qdrant.Client.Grpc;
|
||||
|
||||
await client.DeleteVectorNameAsync(new()
|
||||
{
|
||||
CollectionName = "{collection_name}",
|
||||
VectorName = "{vector_name}"
|
||||
});
|
||||
```
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
```go
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/qdrant/go-client/qdrant"
|
||||
)
|
||||
|
||||
client.DeleteVectorName(context.Background(), &qdrant.DeleteVectorNameRequest{
|
||||
CollectionName: "{collection_name}",
|
||||
VectorName: "{vector_name}",
|
||||
})
|
||||
```
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
```java
|
||||
import io.qdrant.client.QdrantClient;
|
||||
import io.qdrant.client.QdrantGrpcClient;
|
||||
import io.qdrant.client.grpc.Points.DeleteVectorNameRequest;
|
||||
|
||||
client
|
||||
.deleteVectorNameAsync(
|
||||
DeleteVectorNameRequest.newBuilder()
|
||||
.setCollectionName("{collection_name}")
|
||||
.setVectorName("{vector_name}")
|
||||
.build())
|
||||
.get();
|
||||
```
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
```python
|
||||
client.delete_vector_name(
|
||||
collection_name="{collection_name}",
|
||||
vector_name="{vector_name}",
|
||||
)
|
||||
```
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
```rust
|
||||
use qdrant_client::qdrant::DeleteVectorNameRequestBuilder;
|
||||
use qdrant_client::Qdrant;
|
||||
|
||||
client
|
||||
.delete_vector_name(DeleteVectorNameRequestBuilder::new(
|
||||
"{collection_name}",
|
||||
"{vector_name}",
|
||||
))
|
||||
.await?;
|
||||
```
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
```typescript
|
||||
client.deleteVectorName("{collection_name}", "{vector_name}");
|
||||
```
|
||||
@@ -0,0 +1,23 @@
|
||||
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.DeleteVectorName(context.Background(), &qdrant.DeleteVectorNameRequest{
|
||||
CollectionName: "{collection_name}",
|
||||
VectorName: "{vector_name}",
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
```http
|
||||
DELETE /collections/{collection_name}/vectors/{vector_name}
|
||||
```
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.example.snippets_amalgamation;
|
||||
|
||||
import io.qdrant.client.QdrantClient;
|
||||
import io.qdrant.client.QdrantGrpcClient;
|
||||
import io.qdrant.client.grpc.Points.DeleteVectorNameRequest;
|
||||
|
||||
public class Snippet {
|
||||
public static void run() throws Exception {
|
||||
// @hide-start
|
||||
QdrantClient client =
|
||||
new QdrantClient(QdrantGrpcClient.newBuilder("localhost", 6334, false).build());
|
||||
// @hide-end
|
||||
|
||||
client
|
||||
.deleteVectorNameAsync(
|
||||
DeleteVectorNameRequest.newBuilder()
|
||||
.setCollectionName("{collection_name}")
|
||||
.setVectorName("{vector_name}")
|
||||
.build())
|
||||
.get();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
from qdrant_client import QdrantClient # @hide
|
||||
|
||||
client = QdrantClient(url="http://localhost:6333") # @hide
|
||||
|
||||
client.delete_vector_name(
|
||||
collection_name="{collection_name}",
|
||||
vector_name="{vector_name}",
|
||||
)
|
||||
@@ -0,0 +1,17 @@
|
||||
use qdrant_client::qdrant::DeleteVectorNameRequestBuilder;
|
||||
use qdrant_client::Qdrant;
|
||||
|
||||
pub async fn main() -> anyhow::Result<()> {
|
||||
// @hide-start
|
||||
let client = Qdrant::from_url("http://localhost:6334").build()?;
|
||||
// @hide-end
|
||||
|
||||
client
|
||||
.delete_vector_name(DeleteVectorNameRequestBuilder::new(
|
||||
"{collection_name}",
|
||||
"{vector_name}",
|
||||
))
|
||||
.await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
import { QdrantClient } from "@qdrant/js-client-rest"; // @hide
|
||||
|
||||
const client = new QdrantClient({ host: "localhost", port: 6333 }); // @hide
|
||||
|
||||
client.deleteVectorName("{collection_name}", "{vector_name}");
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user