time_boosted = client.queryAsync(
+ QueryPoints.newBuilder()
+ .setCollectionName({collection_name})
+ .addPrefetch(
+ PrefetchQuery.newBuilder()
+ .setQuery(nearest(0.2f, 0.8f, .., ..)) // <-- dense vector
+ .setLimit(50)
+ .build())
+ .setQuery(
+ formula(
+ Formula.newBuilder()
+ .setExpression(
+ sum( // the final score = score + exp_decay(target_time - x_time)
+ SumExpression.newBuilder()
+ .addSum(variable("$score"))
+ .addSum(
+ expDecay(
+ DecayParamsExpression.newBuilder()
+ .setX(
+ datetimeKey("update_time")) // payload key
+ .setTarget(
+ datetime("YYYY-MM-DDT00:00:00Z")) // current datetime
+ .setMidpoint(0.5f)
+ .setScale(86400) // 1 day in seconds
+ .build()))
+ .build()))
+ .build()))
+ .build()
+).get();
+```
diff --git a/qdrant-landing/content/documentation/headless/snippets/query-points/score-boost-time/python.md b/qdrant-landing/content/documentation/headless/snippets/query-points/score-boost-time/python.md
new file mode 100644
index 000000000..ccb689e44
--- /dev/null
+++ b/qdrant-landing/content/documentation/headless/snippets/query-points/score-boost-time/python.md
@@ -0,0 +1,31 @@
+```python
+from qdrant_client import models
+
+
+time_boosted = client.query_points(
+ collection_name="{collection_name}",
+ prefetch=models.Prefetch(
+ query=[0.2, 0.8, ...], # <-- dense vector
+ limit=50
+ ),
+ query=models.FormulaQuery(
+ formula=models.SumExpression(
+ sum=[
+ "$score", # the final score = score + exp_decay(target_time - x_time)
+ models.ExpDecayExpression(
+ exp_decay=models.DecayParamsExpression(
+ x=models.DatetimeKeyExpression(
+ datetime_key="upload_time" # payload key
+ ),
+ target=models.DatetimeExpression(
+ datetime="YYYY-MM-DDT00:00:00Z" # current datetime
+ ),
+ scale=86400, # 1 day in seconds
+ midpoint=0.5 # if item's "update_time" is more than 1 day apart from current datetime, relevance score is less than 0.5
+ )
+ )
+ ]
+ )
+ )
+)
+```
diff --git a/qdrant-landing/content/documentation/headless/snippets/query-points/score-boost-time/rust.md b/qdrant-landing/content/documentation/headless/snippets/query-points/score-boost-time/rust.md
new file mode 100644
index 000000000..23fcc767c
--- /dev/null
+++ b/qdrant-landing/content/documentation/headless/snippets/query-points/score-boost-time/rust.md
@@ -0,0 +1,29 @@
+```rust
+use qdrant_client::qdrant::{
+ DecayParamsExpressionBuilder, Expression, FormulaBuilder, PrefetchQueryBuilder, QueryPointsBuilder,
+};
+use qdrant_client::Qdrant;
+
+let client = Qdrant::from_url("http://localhost:6334").build()?;
+
+let _geo_boosted = client.query(
+ QueryPointsBuilder::new("{collection_name}")
+ .add_prefetch(
+ PrefetchQueryBuilder::default()
+ .query(vec![0.2, 0.8, .., ..]) // <-- dense vector
+ .limit(50u64),
+ )
+ .query(
+ FormulaBuilder::new(Expression::sum_with([ // the final score = score + exp_decay(target_time - x_time)
+ Expression::score(),
+ Expression::exp_decay(
+ DecayParamsExpressionBuilder::new(Expression::datetime_key("update_time")) // payload key
+ .target(Expression::datetime("YYYY-MM-DDT00:00:00Z"))
+ .midpoint(0.5)
+ .scale(86400.0), // 1 day in seconds
+ ),
+ ]))
+ )
+ )
+ .await?;
+```
diff --git a/qdrant-landing/content/documentation/headless/snippets/query-points/score-boost-time/typescript.md b/qdrant-landing/content/documentation/headless/snippets/query-points/score-boost-time/typescript.md
new file mode 100644
index 000000000..b08705dc3
--- /dev/null
+++ b/qdrant-landing/content/documentation/headless/snippets/query-points/score-boost-time/typescript.md
@@ -0,0 +1,31 @@
+```typescript
+import { QdrantClient } from "@qdrant/js-client-rest";
+
+const client = new QdrantClient({ host: "localhost", port: 6333 });
+
+const time_boosted = await client.query(collectionName, {
+ prefetch: {
+ query: [0.2, 0.8, ...], // <-- dense vector
+ limit: 50
+ },
+ query: {
+ formula: {
+ sum: [ // the final score = score + exp_decay(target_time - x_time)
+ "$score",
+ {
+ exp_decay: {
+ x: {
+ datetime_key: "update_time" // payload key
+ },
+ target: {
+ datetime: "YYYY-MM-DDT00:00:00Z" // current datetime
+ },
+ midpoint: 0.5,
+ scale: 86400 // 1 day in seconds
+ }
+ }
+ ]
+ }
+ }
+});
+```
\ No newline at end of file
diff --git a/qdrant-landing/content/documentation/headless/snippets/update-collection/disable-quantization/_description.md b/qdrant-landing/content/documentation/headless/snippets/update-collection/disable-quantization/_description.md
new file mode 100644
index 000000000..4e693a034
--- /dev/null
+++ b/qdrant-landing/content/documentation/headless/snippets/update-collection/disable-quantization/_description.md
@@ -0,0 +1 @@
+This code snippet demonstrates disabling quantization for a collection.
diff --git a/qdrant-landing/content/documentation/headless/snippets/update-collection/disable-quantization/bash.md b/qdrant-landing/content/documentation/headless/snippets/update-collection/disable-quantization/bash.md
new file mode 100644
index 000000000..769a7fc4f
--- /dev/null
+++ b/qdrant-landing/content/documentation/headless/snippets/update-collection/disable-quantization/bash.md
@@ -0,0 +1,7 @@
+```bash
+curl -X PATCH http://localhost:6333/collections/{collection_name} \
+ -H 'Content-Type: application/json' \
+ --data-raw '{
+ "quantization_config": "Disabled"
+ }'
+```
diff --git a/qdrant-landing/content/documentation/headless/snippets/update-collection/disable-quantization/csharp.md b/qdrant-landing/content/documentation/headless/snippets/update-collection/disable-quantization/csharp.md
new file mode 100644
index 000000000..e9a40c9d9
--- /dev/null
+++ b/qdrant-landing/content/documentation/headless/snippets/update-collection/disable-quantization/csharp.md
@@ -0,0 +1,11 @@
+```csharp
+using Qdrant.Client;
+using Qdrant.Client.Grpc;
+
+var client = new QdrantClient("localhost", 6334);
+
+await client.UpdateCollectionAsync(
+ collectionName: "{collection_name}",
+ quantizationConfig: new QuantizationConfigDiff { Disabled = new Disabled() }
+);
+```
diff --git a/qdrant-landing/content/documentation/headless/snippets/update-collection/disable-quantization/go.md b/qdrant-landing/content/documentation/headless/snippets/update-collection/disable-quantization/go.md
new file mode 100644
index 000000000..e5c93b11f
--- /dev/null
+++ b/qdrant-landing/content/documentation/headless/snippets/update-collection/disable-quantization/go.md
@@ -0,0 +1,17 @@
+```go
+import (
+ "context"
+
+ "github.com/qdrant/go-client/qdrant"
+)
+
+client, err := qdrant.NewClient(&qdrant.Config{
+ Host: "localhost",
+ Port: 6334,
+})
+
+client.UpdateCollection(context.Background(), &qdrant.UpdateCollection{
+ CollectionName: "{collection_name}",
+ QuantizationConfig: qdrant.NewQuantizationDiffDisabled(),
+})
+```
diff --git a/qdrant-landing/content/documentation/headless/snippets/update-collection/disable-quantization/http.md b/qdrant-landing/content/documentation/headless/snippets/update-collection/disable-quantization/http.md
new file mode 100644
index 000000000..10782c96e
--- /dev/null
+++ b/qdrant-landing/content/documentation/headless/snippets/update-collection/disable-quantization/http.md
@@ -0,0 +1,6 @@
+```http
+PATCH /collections/{collection_name}
+{
+ "quantization_config": "Disabled"
+}
+```
diff --git a/qdrant-landing/content/documentation/headless/snippets/update-collection/disable-quantization/java.md b/qdrant-landing/content/documentation/headless/snippets/update-collection/disable-quantization/java.md
new file mode 100644
index 000000000..deb41c7ec
--- /dev/null
+++ b/qdrant-landing/content/documentation/headless/snippets/update-collection/disable-quantization/java.md
@@ -0,0 +1,14 @@
+```java
+import io.qdrant.client.grpc.Collections.Disabled;
+import io.qdrant.client.grpc.Collections.QuantizationConfigDiff;
+import io.qdrant.client.grpc.Collections.UpdateCollection;
+
+client.updateCollectionAsync(
+ UpdateCollection.newBuilder()
+ .setCollectionName("{collection_name}")
+ .setQuantizationConfig(
+ QuantizationConfigDiff.newBuilder()
+ .setDisabled(Disabled.getDefaultInstance())
+ .build())
+ .build());
+```
diff --git a/qdrant-landing/content/documentation/headless/snippets/update-collection/disable-quantization/python.md b/qdrant-landing/content/documentation/headless/snippets/update-collection/disable-quantization/python.md
new file mode 100644
index 000000000..7b9985e17
--- /dev/null
+++ b/qdrant-landing/content/documentation/headless/snippets/update-collection/disable-quantization/python.md
@@ -0,0 +1,6 @@
+```python
+client.update_collection(
+ collection_name="{collection_name}",
+ quantization_config=models.Disabled.DISABLED,
+)
+```
diff --git a/qdrant-landing/content/documentation/headless/snippets/update-collection/disable-quantization/rust.md b/qdrant-landing/content/documentation/headless/snippets/update-collection/disable-quantization/rust.md
new file mode 100644
index 000000000..ba9aaff59
--- /dev/null
+++ b/qdrant-landing/content/documentation/headless/snippets/update-collection/disable-quantization/rust.md
@@ -0,0 +1,7 @@
+```rust
+use qdrant_client::qdrant::{Disabled, UpdateCollectionBuilder};
+
+client
+ .update_collection(UpdateCollectionBuilder::new("{collection_name}").quantization_config(Disabled {}))
+ .await?;
+```
diff --git a/qdrant-landing/content/documentation/headless/snippets/update-collection/disable-quantization/typescript.md b/qdrant-landing/content/documentation/headless/snippets/update-collection/disable-quantization/typescript.md
new file mode 100644
index 000000000..01e134730
--- /dev/null
+++ b/qdrant-landing/content/documentation/headless/snippets/update-collection/disable-quantization/typescript.md
@@ -0,0 +1,5 @@
+```typescript
+client.updateCollection("{collection_name}", {
+ quantization_config: 'Disabled'
+});
+```
diff --git a/qdrant-landing/content/documentation/private-cloud/_index.md b/qdrant-landing/content/documentation/private-cloud/_index.md
index 631af89c7..d6f57a8be 100644
--- a/qdrant-landing/content/documentation/private-cloud/_index.md
+++ b/qdrant-landing/content/documentation/private-cloud/_index.md
@@ -18,4 +18,12 @@ On top of the open source Qdrant database, it allows
* Extended telemetry
* Qdrant Enterprise Support Services
+Since there is no communication or connection with Qdrant, you are fully responsible for the entire security of the Qdrant Private Cloud installation. This also means that you do not benefit from all the integrated management and observability features of Qdrant Managed Cloud and Hybrid Cloud, such as:
+
+* A central management UI and API
+* Integrated monitoring and alerting
+* Configuration recommendations
+
+ We encourage you to weigh your security requirements against Hybrid Cloud before inquiring about Private Cloud.
+
If you are interested in using Qdrant Private Cloud, please [contact us](/contact-us/) for more information.
diff --git a/qdrant-landing/content/documentation/private-cloud/configuration.md b/qdrant-landing/content/documentation/private-cloud/configuration.md
index 04bfefb48..81ffc43d1 100644
--- a/qdrant-landing/content/documentation/private-cloud/configuration.md
+++ b/qdrant-landing/content/documentation/private-cloud/configuration.md
@@ -359,4 +359,139 @@ qdrant-cluster-manager:
tolerations: []
affinity: {}
+
+qdrant-cluster-exporter:
+ image:
+ repository: registry.cloud.qdrant.io/qdrant/qdrant-cluster-exporter
+ pullPolicy: Always
+ # Overrides the image tag. Defaults to the chart appVersion.
+ tag: ""
+
+ imagePullSecrets:
+ - name: qdrant-registry-creds
+
+ nameOverride: ""
+ fullnameOverride: ""
+
+ serviceAccount:
+ # Specifies whether a service account should be created
+ create: true
+ # Annotations to add to the service account
+ annotations: {}
+ # The name of the service account to use.
+ # If not set and create is true, a name is generated using the fullname template
+ name: ""
+
+ rbac:
+ create: true
+
+ podAnnotations: {}
+
+ podSecurityContext:
+ runAsNonRoot: true
+ runAsUser: 65534
+ runAsGroup: 65534
+ fsGroup: 65534
+
+ securityContext:
+ readOnlyRootFilesystem: true
+ runAsNonRoot: true
+ runAsUser: 65534
+ runAsGroup: 65534
+
+ service:
+ enabled: true
+ type: ClusterIP
+ port: 9090
+ portName: metrics
+
+ strategy:
+ # Prevents double-scraping by terminating the old pod before creating a new one
+ # The pod scrapes a large volume of metrics with high cardinality
+ type: Recreate
+
+ resources: {}
+ # We usually recommend not setting default resources and to leave this as a conscious
+ # choice for the user. This allows charts to run on environments with fewer
+ # resources, such as Minikube. If you do want to specify resources, uncomment the following
+ # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
+ # limits:
+ # cpu: 100m
+ # memory: 128Mi
+ # requests:
+ # cpu: 100m
+ # memory: 128Mi
+
+ nodeSelector: {}
+
+ tolerations: []
+
+ affinity: {}
+
+ serviceMonitor:
+ enabled: true
+ honorLabels: true
+ scrapeInterval: 60s
+ scrapeTimeout: 55s
+
+ # Limit RBAC to the release namespace
+ limitRBAC: false
+
+ # Watched Namespaces Configuration
+ watch:
+ # If true, only the namespace where the exporter is deployed is watched, otherwise it watches the namespaces defined in watch.namespaces
+ onlyReleaseNamespace: false
+ # an empty list watches all namespaces
+ namespaces: []
+
+ # Configuration for the qdrant cluster exporter
+ config:
+ # The log level for the cluster-exporter
+ # Available options: DEBUG | INFO | WARN | ERROR
+ logLevel: INFO
+ # Controller related settings
+ controller:
+ # Schedule for the controller to do a forced resync (if watches are missed / nothing happened)
+ forceResyncPeriod: 10h
+ # Indicates the maximum QPS from this client to the master
+ # Default is 200
+ qps: 200
+ # Maximum burst for throttle.
+ # Default is 500.
+ burst: 500
+ # Maximum number of concurrent reconciliations
+ maxConcurrentReconciles: 20
+ # Controller's object requeueing interval
+ requeueInterval: 30s
+ # Exporter Metrics Configuration
+ metrics:
+ # The port on which the metrics are exposed
+ port: 9090
+ # The path on which the metrics are exposed
+ path: /metrics
+ # Exporter Health Check Configuration
+ healthz:
+ # The port used for the health probe
+ port: 8085
+ # Qdrant Telemetry and Metrics Cache Configuration
+ cache:
+ # The period after which the cache is invalidated
+ ttl: 60s
+ # Qdrant Rest Client Configuration
+ qdrant:
+ restAPI:
+ # The qdrant rest api port
+ port: 6333
+ # Qdrant API Request Timeout after which requests to Qdrant are canceled if not completed
+ timeout: 20s
+ # Path where qdrant exposes metrics
+ metricsPath: "metrics"
+ # Qdrant Telemetry Configuration
+ telemetry:
+ # Path where qdrant exposes telemetry
+ path: "telemetry"
+ # The level of details for telemetry
+ detailsLevel: 6
+ # Whether to anonymize the telemetry data
+ anonymize: true
```
\ No newline at end of file
diff --git a/qdrant-landing/content/documentation/private-cloud/private-cloud-setup.md b/qdrant-landing/content/documentation/private-cloud/private-cloud-setup.md
index ee7120cfa..feabacf9e 100644
--- a/qdrant-landing/content/documentation/private-cloud/private-cloud-setup.md
+++ b/qdrant-landing/content/documentation/private-cloud/private-cloud-setup.md
@@ -33,12 +33,104 @@ Container images:
- `registry.cloud.qdrant.io/qdrant/qdrant`
- `registry.cloud.qdrant.io/qdrant/operator`
- `registry.cloud.qdrant.io/qdrant/cluster-manager`
+- `registry.cloud.qdrant.io/qdrant/qdrant-cluster-exporter`
Open Containers Initiative (OCI) Helm charts:
- `registry.cloud.qdrant.io/qdrant-charts/qdrant-private-cloud`
- `registry.cloud.qdrant.io/library/qdrant-kubernetes-api`
+- The specific versions for every private cloud version are documented in the [Private Cloud Changelog](/documentation/private-cloud/changelog/).
+
+## Installation
+
+Once onboarded to Qdrant Private Cloud, you will receive credentials to access the Qdrant Cloud Registry. You can use these credentials to install the Qdrant Private Cloud solution using the following commands:
+
+1. Create the namespace for your Private Cloud deployment. You can use any name for the namespace, but you will need to update the later steps to reflect this. E.g.
+
+```bash
+kubectl create namespace qdrant-private-cloud
+```
+
+2. Create a Kubernetes secret with your Qdrant Cloud Registry credentials, to allow your Kubernetes cluster to pull the necessary container images:
+```
+kubectl create secret docker-registry qdrant-registry-creds --docker-server=registry.cloud.qdrant.io --docker-username='your-username' --docker-password='your-password' --namespace qdrant-private-cloud
+```
+
+3. Log in to the Qdrant Cloud Registry using Helm:
+
+```bash
+helm registry login 'registry.cloud.qdrant.io' --username 'your-username' --password 'your-password'
+```
+
+4. Install the Qdrant Kubernetes Operator Custom Resource Definitions (CRDs):
+
+```bash
+helm upgrade --install qdrant-private-cloud-crds oci://registry.cloud.qdrant.io/qdrant-charts/qdrant-kubernetes-api --namespace qdrant-private-cloud --version v1.17.2 --wait
+```
+
+5. Install Qdrant Private Cloud:
+
+```bash
+helm upgrade --install qdrant-private-cloud oci://registry.cloud.qdrant.io/qdrant-charts/qdrant-private-cloud --namespace qdrant-private-cloud --version 1.8.0
+```
+
+Ensure that the `qdrant-kubernetes-api` version is compatible with the `qdrant-private-cloud` version you are installing.
+
+For a list of available versions consult the [Private Cloud Changelog](/documentation/private-cloud/changelog/).
+
+Current default versions are:
+
+* qdrant-kubernetes-api v1.17.2
+* qdrant-private-cloud 1.8.0
+
+For more information also see the [Helm Install Documentation](https://helm.sh/docs/helm/helm_install/).
+
+## Configuring Private Cloud
+
+The Qdrant Private Cloud Helm chart comes with a set of default values which are suitable for most deployments. However, you are able to customize the configuration further to fit your specific needs. See the [Private Cloud Configuration](/documentation/private-cloud/configuration/) page for all available configuration options.
+
+You must ensure that the default `StorageClasses` and corresponding `VolumeSnapshotClass` are set appropriately for your environment.
+
+When creating your own `values.yaml` file, as a best practice, only include the values you are actually changing, e.g. with this `values.yaml` file:
+
+```yaml
+operator:
+ settings:
+ features:
+ clusterManagement:
+ storageClass:
+ database: your-storage-class-name
+ snapshot: your-storage-class-name
+ backupManagement:
+ snapshots:
+ volumeSnapshotClass: your-volume-snapshot-class-name
+```
+
+You can configure Qdrant Private Cloud like this:
+
+```bash
+helm upgrade --install qdrant-private-cloud oci://registry.cloud.qdrant.io/qdrant-charts/qdrant-private-cloud --namespace qdrant-private-cloud --version 1.8.0 -f values.yaml
+```
+
+## Upgrades
+
+To upgrade Qdrant Private Cloud to a new version, first upgrade the Qdrant Kubernetes Operator Custom Resource Definitions (CRDs):
+
+```bash
+helm upgrade --install qdrant-private-cloud-crds oci://registry.cloud.qdrant.io/qdrant-charts/qdrant-kubernetes-api --namespace qdrant-private-cloud --version v1.17.2 --wait
+```
+
+Then upgrade the Qdrant Private Cloud Helm chart using the same configuration values, e.g.:
+
+```bash
+helm upgrade --install qdrant-private-cloud oci://registry.cloud.qdrant.io/qdrant-charts/qdrant-private-cloud --namespace qdrant-private-cloud --version 1.8.0 -f values.yaml
+```
+
+Note, that the image tag values are automatically derived from the chart's appVersions and should not be overridden in the `values.yaml`.
+
+For more information also see the [Helm Upgrade Documentation](https://helm.sh/docs/helm/upgrade/).
+
### Mirroring images and charts
To mirror all necessary container images and Helm charts into your own registry, you can either use a replication feature that your registry provides, or you can manually sync the images with [Skopeo](https://github.com/containers/skopeo):
@@ -70,28 +162,36 @@ skopeo sync --all --src docker --dest docker registry.cloud.qdrant.io/qdrant-cha
skopeo sync --all --src docker --dest docker registry.cloud.qdrant.io/qdrant-charts/qdrant-kubernetes-api your-registry.example.com/qdrant-charts/qdrant-kubernetes-api
```
-During the installation or upgrade, you will need to adapt the repository information in the Helm chart values. See [Private Cloud Configuration](/documentation/private-cloud/configuration/) for details.
+During the installation or upgrade, you will need to adapt the image repository and imagePullSecret information in the Helm chart values, e.g.:
-## Installation and Upgrades
-
-Once you are onboarded to Qdrant Private Cloud, you will receive credentials to access the Qdrant Cloud Registry. You can use these credentials to install the Qdrant Private Cloud solution using the following commands. You can choose the Kubernetes namespace freely.
-
-```bash
-kubectl create namespace qdrant-private-cloud
-kubectl create secret docker-registry qdrant-registry-creds --docker-server=registry.cloud.qdrant.io --docker-username='your-username' --docker-password='your-password' --namespace qdrant-private-cloud
-helm registry login 'registry.cloud.qdrant.io' --username 'your-username' --password 'your-password'
-helm upgrade --install qdrant-private-cloud-crds oci://registry.cloud.qdrant.io/qdrant-charts/qdrant-kubernetes-api --namespace qdrant-private-cloud --version v1.17.2 --wait
-helm upgrade --install qdrant-private-cloud oci://registry.cloud.qdrant.io/qdrant-charts/qdrant-private-cloud --namespace qdrant-private-cloud --version 1.8.0
+```yaml
+operator:
+ image:
+ repository: your-registry.example.com/qdrant/operator
+ imagePullSecrets:
+ - name: your-registry-creds
+ settings:
+ features:
+ clusterManagement:
+ qdrant:
+ image:
+ repository: your-registry.example.com/qdrant/qdrant
+ pullSecretName: your-registry-creds
+
+qdrant-cluster-manager:
+ image:
+ repository: your-registry.example.com/qdrant/cluster-manager
+ imagePullSecrets:
+ - name: your-registry-creds
+
+qdrant-cluster-exporter:
+ image:
+ repository: your-registry.example.com/qdrant/qdrant-cluster-exporter
+ imagePullSecrets:
+ - name: your-registry-creds
```
-For a list of available versions consult the [Private Cloud Changelog](/documentation/private-cloud/changelog/).
-
-Current default versions are:
-
-* qdrant-kubernetes-api v1.17.2
-* qdrant-private-cloud 1.8.0
-
-Especially ensure, that the default values to reference `StorageClasses` and the corresponding `VolumeSnapshotClass` are set correctly in your environment.
+See [Private Cloud Configuration](/documentation/private-cloud/configuration/) for details.
### Scope of the operator
diff --git a/qdrant-landing/content/headless/customer-list.md b/qdrant-landing/content/headless/customer-list.md
index 77167b7ea..134050254 100644
--- a/qdrant-landing/content/headless/customer-list.md
+++ b/qdrant-landing/content/headless/customer-list.md
@@ -45,10 +45,10 @@ customers:
- id: 14
name: Kaufland
logo:
-- id: 16
+- id: 15
name: Deloitte
logo:
-- id: 17
+- id: 16
name: Hewlett-Packard-Enterprise
logo:
sitemapExclude: true
diff --git a/qdrant-landing/content/headless/docs-header.md b/qdrant-landing/content/headless/docs-header.md
index 626560b2e..d06d4b735 100644
--- a/qdrant-landing/content/headless/docs-header.md
+++ b/qdrant-landing/content/headless/docs-header.md
@@ -28,5 +28,10 @@ menuItems:
url: https://api.qdrant.tech/api-reference
external: true
icon: roadmap-white.svg
+ # - id: menu-5
+ # name: Course
+ # url: /course/
+ # external: true
+# icon: roadmap-white.svg
sitemapExclude: true
---
diff --git a/qdrant-landing/content/headless/stats.md b/qdrant-landing/content/headless/stats.md
index 0e53ca7e6..b3fa8fc1c 100644
--- a/qdrant-landing/content/headless/stats.md
+++ b/qdrant-landing/content/headless/stats.md
@@ -1,6 +1,6 @@
---
stats:
- githubStars: 25.1k
- discordMembers: 8.3k
+ githubStars: 25.9k
+ discordMembers: 8.6k
twitterFollowers: 7.5k
---
\ No newline at end of file
diff --git a/qdrant-landing/content/headless/top-banner.md b/qdrant-landing/content/headless/top-banner.md
index 3a65b5d41..4a52944e5 100644
--- a/qdrant-landing/content/headless/top-banner.md
+++ b/qdrant-landing/content/headless/top-banner.md
@@ -10,11 +10,11 @@ icon:
-text: "Natively embed text, image, and sparse vectors with Qdrant Cloud Inference. Now live."
+text: "Think Outside the Bot Hackathon | Over $10k in prizes | Submit project by Sept 16"
link:
text: Learn more
- url: https://qdrant.tech/blog/qdrant-cloud-inference-launch/
-start: 2025-07-15T05:00:00.000Z
+ url: https://try.qdrant.tech/hackathon-2025
+start: 2025-08-13T05:00:00.000Z
sitemapExclude: true
-end: 2025-07-31T14:00:00.000Z
+end: 2025-09-15T14:00:00.000Z
---
diff --git a/qdrant-landing/content/stars/stars-get-started.md b/qdrant-landing/content/stars/stars-get-started.md
index f6f25347c..c09b03ae8 100644
--- a/qdrant-landing/content/stars/stars-get-started.md
+++ b/qdrant-landing/content/stars/stars-get-started.md
@@ -1,7 +1,7 @@
---
title: Are you contributing to our code, content, or community?
button:
- url: https://forms.gle/q4fkwudDsy16xAZk8
+ url: https://forms.gle/vTuy8Fe9RFdt4SiB9
text: Become a Star
image:
src: /img/stars.svg
diff --git a/qdrant-landing/content/stars/stars-hero.md b/qdrant-landing/content/stars/stars-hero.md
index 1fa079d67..47f14aac1 100644
--- a/qdrant-landing/content/stars/stars-hero.md
+++ b/qdrant-landing/content/stars/stars-hero.md
@@ -3,7 +3,7 @@ title: Qdrant Stars
description: A program for developers building, sharing, and leading in the Qdrant community.
Qdrant Stars recognizes and supports our most active contributors. If youâre helping others get more out of Qdrant, this program is for you.
button:
text: Become a Star
- url: https://forms.gle/q4fkwudDsy16xAZk8
+ url: https://forms.gle/vTuy8Fe9RFdt4SiB9
image:
src: /img/stars-hero.svg
alt: Stars
diff --git a/qdrant-landing/package-lock.json b/qdrant-landing/package-lock.json
index 3eed866dc..5fadde868 100644
--- a/qdrant-landing/package-lock.json
+++ b/qdrant-landing/package-lock.json
@@ -12,7 +12,7 @@
"anchor-js": "^5.0.0",
"bootstrap": "^5.3.3",
"clipboard": "^2.0.11",
- "qdrant-page-search": "^1.1.2"
+ "qdrant-page-search": "^1.1.3"
},
"devDependencies": {
"@babel/preset-env": "^7.23.9",
@@ -3112,9 +3112,10 @@
}
},
"node_modules/qdrant-page-search": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/qdrant-page-search/-/qdrant-page-search-1.1.2.tgz",
- "integrity": "sha512-Wxls/AdDrTDbLu3PFAUceKe/2m4ovzRjDxN362XPV5h3Rm2SrchjenlBlzRvtX3azvINeydT8yREr+Ql3PT1Tw=="
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/qdrant-page-search/-/qdrant-page-search-1.1.3.tgz",
+ "integrity": "sha512-r+qaZkm241YDrScEwtZFDsokAf+TTAzoCPjDXlNu+Z+ySsl9y8BRH3GvAxWjsISYuszaKQTrpBlQredNjKZdRw==",
+ "license": "Apache-2.0"
},
"node_modules/queue-microtask": {
"version": "1.2.3",
diff --git a/qdrant-landing/package.json b/qdrant-landing/package.json
index bdb80b2fb..6a30691e5 100644
--- a/qdrant-landing/package.json
+++ b/qdrant-landing/package.json
@@ -21,7 +21,7 @@
"anchor-js": "^5.0.0",
"bootstrap": "^5.3.3",
"clipboard": "^2.0.11",
- "qdrant-page-search": "^1.1.2"
+ "qdrant-page-search": "^1.1.3"
},
"devDependencies": {
"@babel/preset-env": "^7.23.9",
diff --git a/qdrant-landing/static/admin/config.yml b/qdrant-landing/static/admin/config.yml
deleted file mode 100644
index 1d93884d8..000000000
--- a/qdrant-landing/static/admin/config.yml
+++ /dev/null
@@ -1,51 +0,0 @@
-backend:
- name: git-gateway
- branch: master # Branch to update (optional; defaults to master)
-media_folder: qdrant-landing/static/blog/from_cms
-public_folder: /blog/from_cms
-collections:
- - name: 'blog'
- label: 'Blog'
- folder: 'qdrant-landing/content/blog'
- create: true
- slug: '{{slug}}'
- editor:
- preview: true
- fields:
- - { label: 'Draft', name: 'draft', widget: 'boolean', default: true,
- hint: 'If enabled, the post will be saved but not displayed on the site'}
- - { label: 'Title of blog post', name: 'title', widget: 'string' }
- - { label: 'Slug', name: 'slug', widget: 'string', required: true,
- pattern: [ '^[a-z0-9]+(?:-[a-z0-9]+)*$','A slug can have no spaces or special characters' ],
- hint: 'The post URL (do not include folder or file extension)' }
- - { label: 'Short Description', name: 'short_description', widget: 'string'}
- - { label: 'Description', name: 'description', widget: 'string',
- hint: 'Shown in previews of featured posts and on social media' }
- - { label: 'Preview Image', name: 'preview_image', widget: 'image',
- hint: 'Image should be 1200x630. Ensure that main image content is placed in the middle to make pictures friendly to cropping' }
- - { label: 'Publish Date', name: 'date', widget: 'datetime' }
- - { label: 'Author', name: 'author', widget: 'string', hint: 'Name'}
- - { label: 'Featured Post', name: 'featured', widget: 'boolean', default: false,
- hint: 'If enabled, this post will be featured in the "Features and News" blog section. Only the last 4 featured posts will be displayed in this section. Featured posts will not appear in the regular post list.' }
- - { label: 'Tags', name: 'tags', widget: 'list', allow_add: true,
- hint: 'Use a comma without a space to separate tags (this widget will add spaces after commas itself). Currently, tags only used to show related posts and not appear in user interface. But it can change in the future.' }
- - { label: 'Body', name: 'body', widget: 'markdown', modes: ['raw'] }
- - name: 'top-banner'
- label: 'Top Banner'
- create: false
- editor:
- preview: false
- files:
- - name: 'top-banner'
- label: 'Top Banner'
- file: 'qdrant-landing/content/headless/top-banner.md'
- fields:
- - { label: 'Text', name: 'text', widget: 'string' }
- - label: 'Link'
- name: 'link'
- widget: 'object'
- fields:
- - { label: 'Text', name: 'text', widget: 'string' }
- - { label: 'URL', name: 'url', widget: 'string' }
- - { label: 'Start Date', name: 'start', widget: 'datetime', picker_utc: true, hint: 'The banner will be displayed starting from this date, if not set, the banner will not be displayed' }
- - { label: 'End Date', name: 'end', widget: 'datetime', picker_utc: true, hint: 'If not set, the banner will be displayed indefinitely' }
\ No newline at end of file
diff --git a/qdrant-landing/static/admin/emails/confirmation.html b/qdrant-landing/static/admin/emails/confirmation.html
deleted file mode 100644
index 348445d82..000000000
--- a/qdrant-landing/static/admin/emails/confirmation.html
+++ /dev/null
@@ -1,4 +0,0 @@
-Confirm your signup
-
-Follow this link to confirm your user:
-Confirm your mail
diff --git a/qdrant-landing/static/admin/emails/email_change.html b/qdrant-landing/static/admin/emails/email_change.html
deleted file mode 100644
index f7c6f68a4..000000000
--- a/qdrant-landing/static/admin/emails/email_change.html
+++ /dev/null
@@ -1,7 +0,0 @@
-Confirm Change of Email
-
-
- Follow this link to confirm the update of your email from
- {{ .Email }} to {{ .NewEmail }}:
-
-Change Email
\ No newline at end of file
diff --git a/qdrant-landing/static/admin/emails/invite.html b/qdrant-landing/static/admin/emails/invite.html
deleted file mode 100644
index 479983155..000000000
--- a/qdrant-landing/static/admin/emails/invite.html
+++ /dev/null
@@ -1,7 +0,0 @@
-You have been invited
-
-
- You have been invited to create a user on {{ .SiteURL }}. Follow
- this link to accept the invite:
-
-Accept the invite
diff --git a/qdrant-landing/static/admin/emails/recovery.html b/qdrant-landing/static/admin/emails/recovery.html
deleted file mode 100644
index d3b0de47c..000000000
--- a/qdrant-landing/static/admin/emails/recovery.html
+++ /dev/null
@@ -1,5 +0,0 @@
-Reset Password
-
-Follow this link to reset the password for your user:
-
-Reset Password
diff --git a/qdrant-landing/static/admin/index.html b/qdrant-landing/static/admin/index.html
deleted file mode 100644
index abf197a0a..000000000
--- a/qdrant-landing/static/admin/index.html
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
- Content Manager
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/qdrant-landing/static/articles_data/muvera-embeddings/fde-document-processing.png b/qdrant-landing/static/articles_data/muvera-embeddings/fde-document-processing.png
new file mode 100644
index 000000000..a0950207e
Binary files /dev/null and b/qdrant-landing/static/articles_data/muvera-embeddings/fde-document-processing.png differ
diff --git a/qdrant-landing/static/articles_data/muvera-embeddings/fde-query-processing.png b/qdrant-landing/static/articles_data/muvera-embeddings/fde-query-processing.png
new file mode 100644
index 000000000..ea0efc330
Binary files /dev/null and b/qdrant-landing/static/articles_data/muvera-embeddings/fde-query-processing.png differ
diff --git a/qdrant-landing/static/articles_data/muvera-embeddings/muvera-high-level.png b/qdrant-landing/static/articles_data/muvera-embeddings/muvera-high-level.png
new file mode 100644
index 000000000..97b93be75
Binary files /dev/null and b/qdrant-landing/static/articles_data/muvera-embeddings/muvera-high-level.png differ
diff --git a/qdrant-landing/static/articles_data/muvera-embeddings/preview/preview.jpg b/qdrant-landing/static/articles_data/muvera-embeddings/preview/preview.jpg
new file mode 100644
index 000000000..3d0513411
Binary files /dev/null and b/qdrant-landing/static/articles_data/muvera-embeddings/preview/preview.jpg differ
diff --git a/qdrant-landing/static/articles_data/muvera-embeddings/preview/preview.webp b/qdrant-landing/static/articles_data/muvera-embeddings/preview/preview.webp
new file mode 100644
index 000000000..adbf8eb0a
Binary files /dev/null and b/qdrant-landing/static/articles_data/muvera-embeddings/preview/preview.webp differ
diff --git a/qdrant-landing/static/articles_data/muvera-embeddings/preview/social_preview.jpg b/qdrant-landing/static/articles_data/muvera-embeddings/preview/social_preview.jpg
new file mode 100644
index 000000000..99af65f4c
Binary files /dev/null and b/qdrant-landing/static/articles_data/muvera-embeddings/preview/social_preview.jpg differ
diff --git a/qdrant-landing/static/articles_data/muvera-embeddings/preview/title.jpg b/qdrant-landing/static/articles_data/muvera-embeddings/preview/title.jpg
new file mode 100644
index 000000000..3f11f9776
Binary files /dev/null and b/qdrant-landing/static/articles_data/muvera-embeddings/preview/title.jpg differ
diff --git a/qdrant-landing/static/articles_data/muvera-embeddings/preview/title.webp b/qdrant-landing/static/articles_data/muvera-embeddings/preview/title.webp
new file mode 100644
index 000000000..971a40200
Binary files /dev/null and b/qdrant-landing/static/articles_data/muvera-embeddings/preview/title.webp differ
diff --git a/qdrant-landing/static/articles_data/muvera-embeddings/random-projection.png b/qdrant-landing/static/articles_data/muvera-embeddings/random-projection.png
new file mode 100644
index 000000000..b6a57e9b0
Binary files /dev/null and b/qdrant-landing/static/articles_data/muvera-embeddings/random-projection.png differ
diff --git a/qdrant-landing/static/articles_data/muvera-embeddings/simhash-cluster-assignment.png b/qdrant-landing/static/articles_data/muvera-embeddings/simhash-cluster-assignment.png
new file mode 100644
index 000000000..6238e344b
Binary files /dev/null and b/qdrant-landing/static/articles_data/muvera-embeddings/simhash-cluster-assignment.png differ
diff --git a/qdrant-landing/static/articles_data/muvera-embeddings/simhash-space-partitioning.png b/qdrant-landing/static/articles_data/muvera-embeddings/simhash-space-partitioning.png
new file mode 100644
index 000000000..f741b20b2
Binary files /dev/null and b/qdrant-landing/static/articles_data/muvera-embeddings/simhash-space-partitioning.png differ
diff --git a/qdrant-landing/static/blog/case-study-fieldy/case-study-fieldy-bento-dark.jpg b/qdrant-landing/static/blog/case-study-fieldy/case-study-fieldy-bento-dark.jpg
new file mode 100644
index 000000000..435e7aa2e
Binary files /dev/null and b/qdrant-landing/static/blog/case-study-fieldy/case-study-fieldy-bento-dark.jpg differ
diff --git a/qdrant-landing/static/blog/case-study-fieldy/fieldy-device-image.jpg b/qdrant-landing/static/blog/case-study-fieldy/fieldy-device-image.jpg
new file mode 100644
index 000000000..8a12d0ec7
Binary files /dev/null and b/qdrant-landing/static/blog/case-study-fieldy/fieldy-device-image.jpg differ
diff --git a/qdrant-landing/static/blog/case-study-fieldy/social_preview_partnership-fieldy.jpg b/qdrant-landing/static/blog/case-study-fieldy/social_preview_partnership-fieldy.jpg
new file mode 100644
index 000000000..cf70c040a
Binary files /dev/null and b/qdrant-landing/static/blog/case-study-fieldy/social_preview_partnership-fieldy.jpg differ
diff --git a/qdrant-landing/static/blog/case-study-gooddata/gooddata-diagram-1.1.png b/qdrant-landing/static/blog/case-study-gooddata/gooddata-diagram-1.1.png
new file mode 100644
index 000000000..5e7bf1ec5
Binary files /dev/null and b/qdrant-landing/static/blog/case-study-gooddata/gooddata-diagram-1.1.png differ
diff --git a/qdrant-landing/static/blog/case-study-opentable/opentable-concierge-screenshot.png b/qdrant-landing/static/blog/case-study-opentable/opentable-concierge-screenshot.png
new file mode 100644
index 000000000..4ce8e70ed
Binary files /dev/null and b/qdrant-landing/static/blog/case-study-opentable/opentable-concierge-screenshot.png differ
diff --git a/qdrant-landing/static/blog/case-study-opentable/social-preview-opentable.jpg b/qdrant-landing/static/blog/case-study-opentable/social-preview-opentable.jpg
new file mode 100644
index 000000000..9bf2ada2d
Binary files /dev/null and b/qdrant-landing/static/blog/case-study-opentable/social-preview-opentable.jpg differ
diff --git a/qdrant-landing/static/blog/case-study-tavus/social_preview_partnership-tavus.jpg b/qdrant-landing/static/blog/case-study-tavus/social_preview_partnership-tavus.jpg
new file mode 100644
index 000000000..fac9703ab
Binary files /dev/null and b/qdrant-landing/static/blog/case-study-tavus/social_preview_partnership-tavus.jpg differ
diff --git a/qdrant-landing/static/blog/case-study-tavus/tavus-bento-box-dark.jpg b/qdrant-landing/static/blog/case-study-tavus/tavus-bento-box-dark.jpg
new file mode 100644
index 000000000..192beb87f
Binary files /dev/null and b/qdrant-landing/static/blog/case-study-tavus/tavus-bento-box-dark.jpg differ
diff --git a/qdrant-landing/static/blog/decay-functions/decay_1.png b/qdrant-landing/static/blog/decay-functions/decay_1.png
new file mode 100644
index 000000000..3f2a1792b
Binary files /dev/null and b/qdrant-landing/static/blog/decay-functions/decay_1.png differ
diff --git a/qdrant-landing/static/blog/decay-functions/decay_2.png b/qdrant-landing/static/blog/decay-functions/decay_2.png
new file mode 100644
index 000000000..8c816031e
Binary files /dev/null and b/qdrant-landing/static/blog/decay-functions/decay_2.png differ
diff --git a/qdrant-landing/static/blog/decay-functions/decay_3.png b/qdrant-landing/static/blog/decay-functions/decay_3.png
new file mode 100644
index 000000000..30bb6750c
Binary files /dev/null and b/qdrant-landing/static/blog/decay-functions/decay_3.png differ
diff --git a/qdrant-landing/static/blog/decay-functions/preview/preview.jpg b/qdrant-landing/static/blog/decay-functions/preview/preview.jpg
new file mode 100644
index 000000000..56015f2c2
Binary files /dev/null and b/qdrant-landing/static/blog/decay-functions/preview/preview.jpg differ
diff --git a/qdrant-landing/static/blog/decay-functions/preview/preview.webp b/qdrant-landing/static/blog/decay-functions/preview/preview.webp
new file mode 100644
index 000000000..879917f8c
Binary files /dev/null and b/qdrant-landing/static/blog/decay-functions/preview/preview.webp differ
diff --git a/qdrant-landing/static/blog/decay-functions/preview/social_preview.png b/qdrant-landing/static/blog/decay-functions/preview/social_preview.png
new file mode 100644
index 000000000..3a99ef963
Binary files /dev/null and b/qdrant-landing/static/blog/decay-functions/preview/social_preview.png differ
diff --git a/qdrant-landing/static/blog/decay-functions/preview/title.jpg b/qdrant-landing/static/blog/decay-functions/preview/title.jpg
new file mode 100644
index 000000000..f7ea201ff
Binary files /dev/null and b/qdrant-landing/static/blog/decay-functions/preview/title.jpg differ
diff --git a/qdrant-landing/static/blog/decay-functions/preview/title.webp b/qdrant-landing/static/blog/decay-functions/preview/title.webp
new file mode 100644
index 000000000..c9a8efdee
Binary files /dev/null and b/qdrant-landing/static/blog/decay-functions/preview/title.webp differ
diff --git a/qdrant-landing/static/blog/mmr-diversity-aware-reranking/banner.png b/qdrant-landing/static/blog/mmr-diversity-aware-reranking/banner.png
new file mode 100644
index 000000000..5e5822381
Binary files /dev/null and b/qdrant-landing/static/blog/mmr-diversity-aware-reranking/banner.png differ
diff --git a/qdrant-landing/static/blog/mmr-diversity-aware-reranking/black-dress-problem.webp b/qdrant-landing/static/blog/mmr-diversity-aware-reranking/black-dress-problem.webp
new file mode 100644
index 000000000..891b19476
Binary files /dev/null and b/qdrant-landing/static/blog/mmr-diversity-aware-reranking/black-dress-problem.webp differ
diff --git a/qdrant-landing/static/blog/mmr-diversity-aware-reranking/fashion-search-demo.webp b/qdrant-landing/static/blog/mmr-diversity-aware-reranking/fashion-search-demo.webp
new file mode 100644
index 000000000..e1d56b1b4
Binary files /dev/null and b/qdrant-landing/static/blog/mmr-diversity-aware-reranking/fashion-search-demo.webp differ
diff --git a/qdrant-landing/static/blog/mmr-diversity-aware-reranking/mmr-food-diversity.webp b/qdrant-landing/static/blog/mmr-diversity-aware-reranking/mmr-food-diversity.webp
new file mode 100644
index 000000000..ac233c022
Binary files /dev/null and b/qdrant-landing/static/blog/mmr-diversity-aware-reranking/mmr-food-diversity.webp differ
diff --git a/qdrant-landing/static/blog/mmr-diversity-aware-reranking/mmr-search-results.webp b/qdrant-landing/static/blog/mmr-diversity-aware-reranking/mmr-search-results.webp
new file mode 100644
index 000000000..742dcda56
Binary files /dev/null and b/qdrant-landing/static/blog/mmr-diversity-aware-reranking/mmr-search-results.webp differ
diff --git a/qdrant-landing/static/blog/mmr-diversity-aware-reranking/preview/preview.jpg b/qdrant-landing/static/blog/mmr-diversity-aware-reranking/preview/preview.jpg
new file mode 100644
index 000000000..9eb5f628a
Binary files /dev/null and b/qdrant-landing/static/blog/mmr-diversity-aware-reranking/preview/preview.jpg differ
diff --git a/qdrant-landing/static/blog/mmr-diversity-aware-reranking/preview/preview.webp b/qdrant-landing/static/blog/mmr-diversity-aware-reranking/preview/preview.webp
new file mode 100644
index 000000000..717e03508
Binary files /dev/null and b/qdrant-landing/static/blog/mmr-diversity-aware-reranking/preview/preview.webp differ
diff --git a/qdrant-landing/static/blog/mmr-diversity-aware-reranking/preview/social_preview.jpg b/qdrant-landing/static/blog/mmr-diversity-aware-reranking/preview/social_preview.jpg
new file mode 100644
index 000000000..8a951e076
Binary files /dev/null and b/qdrant-landing/static/blog/mmr-diversity-aware-reranking/preview/social_preview.jpg differ
diff --git a/qdrant-landing/static/blog/mmr-diversity-aware-reranking/preview/social_preview.png b/qdrant-landing/static/blog/mmr-diversity-aware-reranking/preview/social_preview.png
new file mode 100644
index 000000000..b68d4053a
Binary files /dev/null and b/qdrant-landing/static/blog/mmr-diversity-aware-reranking/preview/social_preview.png differ
diff --git a/qdrant-landing/static/blog/mmr-diversity-aware-reranking/preview/title.jpg b/qdrant-landing/static/blog/mmr-diversity-aware-reranking/preview/title.jpg
new file mode 100644
index 000000000..86a0da46b
Binary files /dev/null and b/qdrant-landing/static/blog/mmr-diversity-aware-reranking/preview/title.jpg differ
diff --git a/qdrant-landing/static/blog/mmr-diversity-aware-reranking/preview/title.webp b/qdrant-landing/static/blog/mmr-diversity-aware-reranking/preview/title.webp
new file mode 100644
index 000000000..c422f21d5
Binary files /dev/null and b/qdrant-landing/static/blog/mmr-diversity-aware-reranking/preview/title.webp differ
diff --git a/qdrant-landing/static/blog/mmr-diversity-aware-reranking/standard-search-results.webp b/qdrant-landing/static/blog/mmr-diversity-aware-reranking/standard-search-results.webp
new file mode 100644
index 000000000..3b65375e1
Binary files /dev/null and b/qdrant-landing/static/blog/mmr-diversity-aware-reranking/standard-search-results.webp differ
diff --git a/qdrant-landing/static/blog/vector-space-day-2025-lineup/lineup-hero.jpg b/qdrant-landing/static/blog/vector-space-day-2025-lineup/lineup-hero.jpg
new file mode 100644
index 000000000..6fa79f595
Binary files /dev/null and b/qdrant-landing/static/blog/vector-space-day-2025-lineup/lineup-hero.jpg differ
diff --git a/qdrant-landing/static/blog/vector-space-day-2025/VSD-25.08.png b/qdrant-landing/static/blog/vector-space-day-2025/VSD-25.08.png
new file mode 100644
index 000000000..31d2a29d3
Binary files /dev/null and b/qdrant-landing/static/blog/vector-space-day-2025/VSD-25.08.png differ
diff --git a/qdrant-landing/static/blog/vector-space-day-2025/Vector-Space-Day-Partners_28-Aug.jpg b/qdrant-landing/static/blog/vector-space-day-2025/Vector-Space-Day-Partners_28-Aug.jpg
new file mode 100644
index 000000000..454ece313
Binary files /dev/null and b/qdrant-landing/static/blog/vector-space-day-2025/Vector-Space-Day-Partners_28-Aug.jpg differ
diff --git a/qdrant-landing/static/blog/vector-space-day-2025/hackathon-26aug.png b/qdrant-landing/static/blog/vector-space-day-2025/hackathon-26aug.png
new file mode 100644
index 000000000..a7b383397
Binary files /dev/null and b/qdrant-landing/static/blog/vector-space-day-2025/hackathon-26aug.png differ
diff --git a/qdrant-landing/static/blog/vector-space-day-2025/hackathon.jpg b/qdrant-landing/static/blog/vector-space-day-2025/hackathon.jpg
new file mode 100644
index 000000000..9e1d88444
Binary files /dev/null and b/qdrant-landing/static/blog/vector-space-day-2025/hackathon.jpg differ
diff --git a/qdrant-landing/static/blog/vector-space-day-2025/media-partner.png b/qdrant-landing/static/blog/vector-space-day-2025/media-partner.png
new file mode 100644
index 000000000..9254085a0
Binary files /dev/null and b/qdrant-landing/static/blog/vector-space-day-2025/media-partner.png differ
diff --git a/qdrant-landing/static/blog/vector-space-day-2025/partners-20.08.png b/qdrant-landing/static/blog/vector-space-day-2025/partners-20.08.png
new file mode 100644
index 000000000..eb3f1e4f8
Binary files /dev/null and b/qdrant-landing/static/blog/vector-space-day-2025/partners-20.08.png differ
diff --git a/qdrant-landing/static/courses/course-integrations/aparavi.svg b/qdrant-landing/static/courses/course-integrations/aparavi.svg
new file mode 100644
index 000000000..0603484b8
--- /dev/null
+++ b/qdrant-landing/static/courses/course-integrations/aparavi.svg
@@ -0,0 +1,6 @@
+
diff --git a/qdrant-landing/static/courses/course-integrations/camel-ai.svg b/qdrant-landing/static/courses/course-integrations/camel-ai.svg
new file mode 100644
index 000000000..ef2106e2a
--- /dev/null
+++ b/qdrant-landing/static/courses/course-integrations/camel-ai.svg
@@ -0,0 +1,3 @@
+
diff --git a/qdrant-landing/static/courses/course-integrations/crew-ai.svg b/qdrant-landing/static/courses/course-integrations/crew-ai.svg
new file mode 100755
index 000000000..ca7d0be94
--- /dev/null
+++ b/qdrant-landing/static/courses/course-integrations/crew-ai.svg
@@ -0,0 +1,3 @@
+
diff --git a/qdrant-landing/static/courses/course-integrations/haystack.svg b/qdrant-landing/static/courses/course-integrations/haystack.svg
new file mode 100644
index 000000000..337baa3d8
--- /dev/null
+++ b/qdrant-landing/static/courses/course-integrations/haystack.svg
@@ -0,0 +1,3 @@
+
diff --git a/qdrant-landing/static/courses/course-integrations/jina.svg b/qdrant-landing/static/courses/course-integrations/jina.svg
new file mode 100644
index 000000000..c2f40184a
--- /dev/null
+++ b/qdrant-landing/static/courses/course-integrations/jina.svg
@@ -0,0 +1,5 @@
+
diff --git a/qdrant-landing/static/courses/course-integrations/n8n.svg b/qdrant-landing/static/courses/course-integrations/n8n.svg
new file mode 100644
index 000000000..932e65c40
--- /dev/null
+++ b/qdrant-landing/static/courses/course-integrations/n8n.svg
@@ -0,0 +1,10 @@
+
diff --git a/qdrant-landing/static/courses/course-integrations/quotient.svg b/qdrant-landing/static/courses/course-integrations/quotient.svg
new file mode 100644
index 000000000..714d200a8
--- /dev/null
+++ b/qdrant-landing/static/courses/course-integrations/quotient.svg
@@ -0,0 +1,9 @@
+
diff --git a/qdrant-landing/static/courses/course-integrations/superlinked.svg b/qdrant-landing/static/courses/course-integrations/superlinked.svg
new file mode 100644
index 000000000..e7bde4d96
--- /dev/null
+++ b/qdrant-landing/static/courses/course-integrations/superlinked.svg
@@ -0,0 +1,4 @@
+
diff --git a/qdrant-landing/static/courses/course-integrations/tensorlake.svg b/qdrant-landing/static/courses/course-integrations/tensorlake.svg
new file mode 100644
index 000000000..21a13a494
--- /dev/null
+++ b/qdrant-landing/static/courses/course-integrations/tensorlake.svg
@@ -0,0 +1,4 @@
+
diff --git a/qdrant-landing/static/courses/course-integrations/twelveLabs.svg b/qdrant-landing/static/courses/course-integrations/twelveLabs.svg
new file mode 100644
index 000000000..a5294c163
--- /dev/null
+++ b/qdrant-landing/static/courses/course-integrations/twelveLabs.svg
@@ -0,0 +1,30 @@
+
diff --git a/qdrant-landing/static/courses/course-integrations/unstructured.svg b/qdrant-landing/static/courses/course-integrations/unstructured.svg
new file mode 100644
index 000000000..cd7a82032
--- /dev/null
+++ b/qdrant-landing/static/courses/course-integrations/unstructured.svg
@@ -0,0 +1,9 @@
+
diff --git a/qdrant-landing/static/courses/course-integrations/vectorize.svg b/qdrant-landing/static/courses/course-integrations/vectorize.svg
new file mode 100644
index 000000000..d6bd26d9d
--- /dev/null
+++ b/qdrant-landing/static/courses/course-integrations/vectorize.svg
@@ -0,0 +1,5 @@
+
diff --git a/qdrant-landing/static/llms-full.txt b/qdrant-landing/static/llms-full.txt
index d059df3c6..e588b9931 100644
--- a/qdrant-landing/static/llms-full.txt
+++ b/qdrant-landing/static/llms-full.txt
@@ -12512,9 +12512,11 @@ storage:
# Number of neighbours to consider during the index building. Larger the value - more accurate the search, more time required to build index.
ef_construct: 100
- # Minimal size (in KiloBytes) of vectors for additional payload-based indexing.
- # If payload chunk is smaller than `full_scan_threshold_kb` additional indexing won't be used -
- # in this case full-scan search should be preferred by query planner and additional indexing is not required.
+ # Minimal size threshold (in KiloBytes) below which full-scan is preferred over HNSW search.
+ # This measures the total size of vectors being queried against.
+ # When the maximum estimated amount of points that a condition satisfies is smaller than
+ # `full_scan_threshold_kb`, the query planner will use full-scan search instead of HNSW index
+ # traversal for better performance.
# Note: 1Kb = 1 vector of size 256
full_scan_threshold_kb: 10000
@@ -28810,9 +28812,11 @@ storage:
# Number of neighbours to consider during the index building.
# Larger the value - more accurate the search, more time required to build index.
ef_construct: 100
- # Minimal size (in KiloBytes) of vectors for additional payload-based indexing.
- # If payload chunk is smaller than `full_scan_threshold_kb` additional indexing won't be used -
- # in this case full-scan search should be preferred by query planner and additional indexing is not required.
+ # Minimal size threshold (in KiloBytes) below which full-scan is preferred over HNSW search.
+ # This measures the total size of vectors being queried against.
+ # When the maximum estimated amount of points that a condition satisfies is smaller than
+ # `full_scan_threshold_kb`, the query planner will use full-scan search instead of HNSW index
+ # traversal for better performance.
# Note: 1Kb = 1 vector of size 256
full_scan_threshold: 10000
@@ -34510,13 +34514,14 @@ POST /collections/{collection_name}/points/query
"query": {
"formula": {
"sum": [\
- "$score,\
+ "$score",\
{\
"mult": [\
0.5,\
{\
"key": "tag",\
- "match": { "any": ["h1", "h2", "h3", "h4"] } }\
+ "match": { "any": ["h1", "h2", "h3", "h4"] }\
+ }\
]\
},\
{\
diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/_components.scss b/qdrant-landing/themes/qdrant-2024/assets/css/_components.scss
index 9dfd913fd..6e1a8ed23 100644
--- a/qdrant-landing/themes/qdrant-2024/assets/css/_components.scss
+++ b/qdrant-landing/themes/qdrant-2024/assets/css/_components.scss
@@ -6,3 +6,8 @@
@import 'components/copy-btn';
@import 'components/lang-switcher';
@import 'components/alerts';
+@import 'components/list';
+@import 'components/cards-list';
+@import 'components/accordion';
+@import 'components/course-card';
+@import 'components/date';
diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/components/_accordion.scss b/qdrant-landing/themes/qdrant-2024/assets/css/components/_accordion.scss
new file mode 100644
index 000000000..46e07b876
--- /dev/null
+++ b/qdrant-landing/themes/qdrant-2024/assets/css/components/_accordion.scss
@@ -0,0 +1,70 @@
+@use '../helpers/functions' as *;
+@use 'sass:math';
+
+.accordion-dark {
+ display: flex;
+ flex-direction: column;
+ gap: $spacer * 1.5;
+ width: 100%;
+ margin-bottom: $spacer * 2;
+
+ &__item {
+ border: pxToRem(1) solid $neutral-20;
+ background: linear-gradient($neutral-20, #0e1424);
+ border-radius: pxToRem(12);
+
+ &-header {
+ position: relative;
+ display: flex;
+ align-items: center;
+ margin-bottom: 0;
+ padding: $spacer * 2 $spacer * 4 $spacer * 2 $spacer * 2;
+ color: $neutral-94;
+ font-size: $font-size-l;
+ line-height: $line-height-lg;
+ font-weight: 500;
+ cursor: pointer;
+
+ &:after {
+ content: '';
+ display: block;
+ position: absolute;
+ right: $spacer * 2;
+ top: calc(50% - pxToRem(9));
+ height: pxToRem(18);
+ width: pxToRem(16);
+ background-image: url("data:image/svg+xml,%3Csvg width='17' height='19' viewBox='0 0 17 19' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_10609_1497)'%3E%3Cpath d='M1.81787 6.50513L8.63605 13.3233L15.4542 6.50513' stroke='%23E1E5F0' stroke-width='1.36364' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0_10609_1497'%3E%3Crect width='16.3636' height='16.3636' fill='white' transform='translate(0.63623 1.91431)'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A");
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: cover;
+ }
+ }
+
+ &-body {
+ max-height: 0;
+ overflow: hidden;
+ transition: max-height 0.2s ease-out;
+
+ &-content {
+ padding: 0 $spacer * 2 $spacer * 2 $spacer * 2;
+ color: $neutral-70;
+
+ [data-theme='light'] & {
+ color: $neutral-70;
+ }
+
+ ul {
+ li:not(:last-of-type) {
+ margin-bottom: pxToRem(10);
+ }
+ }
+ }
+ }
+
+ &.active {
+ .accordion-dark__item-header:after {
+ background-image: url("data:image/svg+xml,%3Csvg width='17' height='19' viewBox='0 0 17 19' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_10854_1606)'%3E%3Cpath d='M15.4546 13.3232L8.63641 6.50506L1.81823 13.3232' stroke='%23E1E5F0' stroke-width='1.36364' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0_10854_1606'%3E%3Crect width='16.3636' height='16.3636' fill='white' transform='translate(0.63623 1.91418)'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A");
+ }
+ }
+ }
+}
diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/components/_cards-list.scss b/qdrant-landing/themes/qdrant-2024/assets/css/components/_cards-list.scss
new file mode 100644
index 000000000..ece6c914e
--- /dev/null
+++ b/qdrant-landing/themes/qdrant-2024/assets/css/components/_cards-list.scss
@@ -0,0 +1,50 @@
+@use '../helpers/functions' as *;
+@use 'sass:math';
+
+.cards-list {
+ display: flex;
+ flex-wrap: wrap;
+ gap: $spacer * 1.5 $spacer * 2;
+
+ &__item {
+ display: flex;
+ align-items: flex-start;
+ gap: $spacer;
+ width: 100%;
+ padding: $spacer;
+ border: pxToRem(1) solid $neutral-20;
+ background: linear-gradient($neutral-20, #0e1424);
+ border-radius: pxToRem(12);
+
+ &-content {
+ margin-bottom: 0;
+ font-size: $font-size-s;
+ line-height: $line-height-sm;
+ color: $neutral-70;
+ }
+
+ &-title {
+ margin-bottom: math.div($spacer, 4);
+ font-size: $font-size-l;
+ line-height: $line-height-lg;
+ color: $neutral-98;
+ }
+
+ img.cards-list__item-image {
+ flex-shrink: 0;
+ width: $spacer * 3;
+ height: auto;
+ margin: 0;
+ }
+ }
+
+ @include media-breakpoint-up(lg) {
+ &__item {
+ width: calc(50% - $spacer);
+ padding: $spacer;
+ border: pxToRem(1) solid $neutral-20;
+ background: linear-gradient($neutral-20, #0e1424);
+ border-radius: pxToRem(12);
+ }
+ }
+}
diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/components/_course-card.scss b/qdrant-landing/themes/qdrant-2024/assets/css/components/_course-card.scss
new file mode 100644
index 000000000..c8c6826a8
--- /dev/null
+++ b/qdrant-landing/themes/qdrant-2024/assets/css/components/_course-card.scss
@@ -0,0 +1,43 @@
+@use '../helpers/functions' as *;
+@use "sass:math";
+
+.course-card {
+ width: 100%;
+ margin: $spacer * 2.5 0 $spacer;
+ padding: $spacer * 2;
+ border: pxToRem(1) solid $neutral-20;
+ background: linear-gradient($neutral-20, #0e1424);
+ border-radius: pxToRem(12);
+
+ &__title {
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ gap: $spacer;
+ margin-bottom: $spacer * 1.5;
+ font-size: $font-size-xl;
+ line-height: pxToRem(30);
+ font-weight: 500;
+ color: $neutral-98;
+ }
+
+ .course-card__title img {
+ display: block;
+ margin: 0;
+ height: pxToRem(20);
+ width: pxToRem(20);
+ }
+
+ &__content {
+ [data-theme='light'] & {
+ color: $neutral-70;
+ }
+ }
+
+ &__button {
+ margin-top: $spacer * 1.5;
+ font-size: $font-size-s;
+ line-height: $line-height-sm;
+ font-weight: 500;
+ }
+}
diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/components/_date.scss b/qdrant-landing/themes/qdrant-2024/assets/css/components/_date.scss
new file mode 100644
index 000000000..48e7199f3
--- /dev/null
+++ b/qdrant-landing/themes/qdrant-2024/assets/css/components/_date.scss
@@ -0,0 +1,17 @@
+@use '../helpers/functions' as *;
+@use "sass:math";
+
+.date {
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ gap: math.div($spacer, 2);
+ margin-bottom: math.div($spacer, 2);
+ color: $secondary-blue-50;
+
+ &-icon {
+ width: $spacer !important;
+ height: $spacer !important;
+ margin: 0 !important;
+ }
+}
diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/components/_list.scss b/qdrant-landing/themes/qdrant-2024/assets/css/components/_list.scss
new file mode 100644
index 000000000..d0b942aff
--- /dev/null
+++ b/qdrant-landing/themes/qdrant-2024/assets/css/components/_list.scss
@@ -0,0 +1,66 @@
+@use '../helpers/functions' as *;
+@use "sass:math";
+
+.list {
+ color: $neutral-70;
+
+ ul {
+ list-style: none;
+ margin-bottom: 0;
+ padding-left: 0;
+
+ li {
+ position: relative;
+ padding-left: pxToRem(22);
+
+ &:not(:last-of-type) {
+ margin-bottom: pxToRem(12);
+ }
+
+ &:before {
+ content: "";
+ position: absolute;
+ left: 0;
+ top: pxToRem(5);
+ width: pxToRem(14);
+ height: pxToRem(14);
+ background-image: url("data:image/svg+xml,%3Csvg width='14' height='15' viewBox='0 0 14 15' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_10609_1587)'%3E%3Cpath d='M12.6875 4.56921V10.9862L7 14.1942L1.3125 10.9862V4.56921L7 1.36121L12.6875 4.56921ZM9.53223 5.87976L6.05371 8.92371L4.08301 6.953L3.25781 7.77722L6.00098 10.5204L6.41113 10.161L10.3008 6.75867L10.7393 6.3739L9.97168 5.49597L9.53223 5.87976Z' fill='%238F98B3'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0_10609_1587'%3E%3Crect width='14' height='14' fill='white' transform='translate(0 0.777832)'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A");
+ background-size: contain;
+ background-repeat: no-repeat;
+ }
+ }
+ }
+
+ &.list-completed {
+ ul {
+ li {
+ padding-left: pxToRem(26);
+
+ &:before {
+ top: pxToRem(3);
+ width: pxToRem(18);
+ height: pxToRem(18);
+ background-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M16.3125 4.875V13.125L9 17.25L1.6875 13.125V4.875L9 0.75L16.3125 4.875ZM12.2559 6.56055L7.7832 10.4727L5.25 7.93945L4.18945 9L7.71582 12.5264L8.24414 12.0645L13.2441 7.68945L13.8086 7.19531L12.8203 6.06641L12.2559 6.56055Z' fill='%23008A53'/%3E%3C/svg%3E%0A");
+ }
+ }
+ }
+ }
+
+ &.list-wide {
+ ul {
+ -webkit-column-count: 2;
+ -moz-column-count: 2;
+ column-count: 2;
+ column-gap: $spacer * 6;
+ margin-bottom: -$spacer * 1.5;
+
+ li {
+ margin-bottom: $spacer * 1.5;
+ }
+ }
+ }
+
+ [data-theme='light'] & {
+ color: $neutral-30;
+ }
+}
diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/_community-features.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/_community-features.scss
index a623cfa25..8830fcb04 100644
--- a/qdrant-landing/themes/qdrant-2024/assets/css/partials/_community-features.scss
+++ b/qdrant-landing/themes/qdrant-2024/assets/css/partials/_community-features.scss
@@ -14,47 +14,6 @@
text-align: center;
}
- &__resources-card {
- padding-bottom: 0;
- overflow: hidden;
-
- &-title {
- font-size: $spacer * 1.5;
- line-height: pxToRem(34);
- color: $neutral-20;
- margin-bottom: pxToRem(12);
- }
-
- &-description {
- color: $neutral-40;
- margin-bottom: pxToRem(12);
- }
-
- &-link {
- @include mixins.link-color($neutral-20);
- }
-
- &-image {
- width: 100%;
- align-self: center;
- margin-top: $spacer * 1.5;
- }
-
- &:hover {
- .community-features__resources-card-title {
- color: $primary-50;
- }
- }
- }
-
- &__resources-cards {
- margin-bottom: pxToRem(30);
-
- img {
- min-width: pxToRem(635);
- }
- }
-
&__card {
&-icon {
height: $spacer * 1.5;
@@ -96,18 +55,6 @@
margin-bottom: $spacer * 5;
}
- &__resources-card {
- justify-content: flex-start;
-
- &-link {
- margin-bottom: $spacer;
- }
-
- &-image {
- margin-top: auto;
- }
- }
-
&__card {
justify-content: flex-start;
diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/_customer-list.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/_customer-list.scss
index ec6a4b526..7bbc21468 100644
--- a/qdrant-landing/themes/qdrant-2024/assets/css/partials/_customer-list.scss
+++ b/qdrant-landing/themes/qdrant-2024/assets/css/partials/_customer-list.scss
@@ -7,7 +7,7 @@
background-color: $neutral-94;
&__logos {
- @include marquee.base(64px, 224px, 18, 18, 52px, $neutral-94, false, 50s, block);
+ @include marquee.base(64px, 224px, 17, 17, 52px, $neutral-94, false, 50s, block);
}
&__title {
@@ -25,7 +25,7 @@
background-color: $neutral-20;
.customer-list__logos {
- @include marquee.base(64px, 224px, 18, 18, 52px, $neutral-20, false, 50s, block);
+ @include marquee.base(64px, 224px, 17, 17, 52px, $neutral-20, false, 50s, block);
}
.customer-list__title {
diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/_table-of-contents.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/_table-of-contents.scss
index 1a2c1ba83..3177fede8 100644
--- a/qdrant-landing/themes/qdrant-2024/assets/css/partials/_table-of-contents.scss
+++ b/qdrant-landing/themes/qdrant-2024/assets/css/partials/_table-of-contents.scss
@@ -107,6 +107,13 @@
}
}
+ &__button {
+ width: 100%;
+ font-size: $font-size-s;
+ line-height: $line-height-sm;
+ color: $neutral-100;
+ }
+
@include media-breakpoint-up(xl) {
max-height: calc(100vh - 80px);
width: pxToRem(232);
@@ -134,7 +141,7 @@
color: $neutral-98;
}
- a {
+ a:not(.table-of-contents__button) {
color: $neutral-70;
transition: all 0.3s;
&:hover {
diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/documentation/_docs-footer.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/documentation/_docs-footer.scss
index 126f9d644..d117a9e91 100644
--- a/qdrant-landing/themes/qdrant-2024/assets/css/partials/documentation/_docs-footer.scss
+++ b/qdrant-landing/themes/qdrant-2024/assets/css/partials/documentation/_docs-footer.scss
@@ -8,8 +8,7 @@
justify-content: center;
align-items: center;
padding: $spacer * 2.5 0;
- border-top: 1px solid $neutral-20;
- border-bottom: 1px solid $neutral-20;
+ border-top: pxToRem(1) solid $neutral-20;
color: $neutral-98;
h4 {
@@ -22,6 +21,7 @@
}
&__bottom {
+ border-top: pxToRem(1) solid $neutral-20;
@extend .footer__bottom;
}
diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/documentation/_docs.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/documentation/_docs.scss
index c46a44350..63bf12b11 100644
--- a/qdrant-landing/themes/qdrant-2024/assets/css/partials/documentation/_docs.scss
+++ b/qdrant-landing/themes/qdrant-2024/assets/css/partials/documentation/_docs.scss
@@ -100,6 +100,13 @@
text-align: center;
z-index: 2;
+ h1 {
+ font-size: $spacer * 2;
+ line-height: $spacer * 2.5;
+ padding: 0;
+ margin-bottom: math.div($spacer, 2);
+ }
+
h3 {
font-size: pxToRem(20);
line-height: pxToRem(30);
@@ -108,6 +115,12 @@
margin-bottom: $spacer * 1.5;
}
+ p {
+ font-size: pxToRem(18);
+ line-height: pxToRem(27);
+ margin-bottom: 0;
+ }
+
a {
font-size: pxToRem(14);
font-weight: 500;
@@ -207,6 +220,8 @@
text-align: left;
h3,
+ h1,
+ p,
a {
margin-left: $spacer * 2.5;
}
@@ -256,9 +271,12 @@
}
}
.docs-core__developing-block {
- h3 {
+ h1, h3 {
color: $neutral-98;
}
+ p {
+ color: $neutral-70;
+ }
.button_outlined {
color: $neutral-100;
box-shadow: 0 0 0 1px $neutral-60;
diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/documentation/_documentation-menu.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/documentation/_documentation-menu.scss
index c2713400b..ff2d5b2ef 100644
--- a/qdrant-landing/themes/qdrant-2024/assets/css/partials/documentation/_documentation-menu.scss
+++ b/qdrant-landing/themes/qdrant-2024/assets/css/partials/documentation/_documentation-menu.scss
@@ -101,7 +101,7 @@
}
&.active {
- .docs-menu__links-group-heading>a {
+ &>.docs-menu__links-group-heading>a {
font-weight: 600;
background-color: $neutral-30;
color: $neutral-90;
@@ -177,6 +177,34 @@
}
}
+ &__progress {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 0 math.div($spacer, 2);
+
+ &-container {
+ width: pxToRem(168);
+ height: pxToRem(10);
+ background-color: $neutral-20;
+ border-radius: $spacer;
+ overflow: hidden;
+ }
+
+ &-bar {
+ height: 100%;
+ border-radius: $spacer;
+ background-color: $primary-50;
+ }
+
+ &-text {
+ margin-bottom: 0;
+ font-size: $font-size-xs;
+ line-height: $font-size-l;
+ color: $neutral-70;
+ }
+ }
+
@include media-breakpoint-up(xl) {
display: block;
height: calc(100vh - 80px);
@@ -220,7 +248,7 @@
&__links-group {
&.active {
- .docs-menu__links-group-heading>a {
+ &>.docs-menu__links-group-heading>a {
background-color: $neutral-20;
}
@@ -345,7 +373,7 @@
&__links-group {
&.active {
- .docs-menu__links-group-heading>a {
+ &>.docs-menu__links-group-heading>a {
color: $neutral-30;
}
}
@@ -376,4 +404,4 @@
}
}
}
-}
\ No newline at end of file
+}
diff --git a/qdrant-landing/themes/qdrant-2024/assets/js/helpers.js b/qdrant-landing/themes/qdrant-2024/assets/js/helpers.js
index 10ebbd5a1..f2a15433c 100644
--- a/qdrant-landing/themes/qdrant-2024/assets/js/helpers.js
+++ b/qdrant-landing/themes/qdrant-2024/assets/js/helpers.js
@@ -1,3 +1,5 @@
+const UTM_PARAMS_KEY = 'utm_params';
+
export function isElementInViewport(el) {
var rect = el.getBoundingClientRect();
@@ -105,54 +107,56 @@ export function addGA4Properties(properties) {
properties.ga_client_id = getCookie('_ga')?.replace('GA1.1.','');
}
+export function persistUTMParams() {
+ if (!window.location.search) return;
+
+ const utmParams = getUTMParams();
+
+ if (!Object.keys(utmParams).length) return;
+
+ let filteredParams = '';
+ let ampersand = false;
+
+ for (const key in utmParams) {
+ if (utmParams[key]) {
+ ampersand = filteredParams.length;
+ filteredParams += `${ampersand ? '&' : ''}${key}=${utmParams[key]}`;
+ }
+ }
+
+ const oneYearInSeconds = 365 * 24 * 60 * 60;
+ document.cookie = `${UTM_PARAMS_KEY}=${filteredParams}; path=/; max-age=${oneYearInSeconds}`;
+}
+
export function getUTMParams() {
- const urlParams = new URLSearchParams(window.location.search);
+ const search = window.location.search;
+
+ if (!search) return {};
- // Gather all GTM related params
- const utmIds = {
- gcl: urlParams.get('gclid'),
- gbra: urlParams.get('gbraid'),
- wbra: urlParams.get('wbraid'),
+ const urlParams = new URLSearchParams(search);
+
+ return {
+ gclid: urlParams.get('gclid'),
+ gbraid: urlParams.get('gbraid'),
+ wbraid: urlParams.get('wbraid'),
+ utm_source: urlParams.get('utm_source'),
+ utm_medium: urlParams.get('utm_medium'),
+ utm_campaign: urlParams.get('utm_campaign'),
+ utm_content: urlParams.get('utm_content'),
+ utm_term: urlParams.get('utm_term')
};
-
- const utmParams = {
- source: urlParams.get('utm_source'),
- medium: urlParams.get('utm_medium'),
- campaign: urlParams.get('utm_campaign'),
- content: urlParams.get('utm_content'),
- term: urlParams.get('utm_term')
- };
-
- return [utmIds, utmParams];
}
export function addUTMToLinks() {
- const [utmIds, utmParams] = getUTMParams();
-
- // Create new params string for outbound links and store in sessionStorage
- let newParams = '';
- for (const key in utmIds) {
- if (utmIds[key]) {
- sessionStorage.setItem(`${key}id`, utmIds[key]);
- newParams += `${key}id=${utmIds[key]}&`;
- }
- }
- for (const key in utmParams) {
- if (utmParams[key]) {
- sessionStorage.setItem(`utm_${key}`, utmParams[key]);
- newParams += `utm_${key}=${utmParams[key]}&`;
- }
- }
+ const utmParams = getCookie(UTM_PARAMS_KEY);
// Add url params to outbound links to product site
- if (newParams.length > 0) {
- newParams = newParams.replace(/[&|?]$/, ''); // remove trailing & or ?
-
+ if (utmParams) {
const links = document.querySelectorAll('a[href*="cloud.qdrant.io"]');
links.forEach(link => {
const href = link.href;
const separator = href.indexOf('?') === -1 ? '?' : '&';
- link.href = `${href}${separator}${newParams}`;
+ link.href = `${href}${separator}${utmParams}&qdrant_ref=qdrant_tech`;
});
}
}
diff --git a/qdrant-landing/themes/qdrant-2024/assets/js/index.js b/qdrant-landing/themes/qdrant-2024/assets/js/index.js
index eff6f9301..b2da1238b 100644
--- a/qdrant-landing/themes/qdrant-2024/assets/js/index.js
+++ b/qdrant-landing/themes/qdrant-2024/assets/js/index.js
@@ -1,10 +1,12 @@
import scrollHandler from './scroll-handler';
import { XXL_BREAKPOINT } from './constants';
-import { initGoToTopButton } from './helpers';
+import { initGoToTopButton, persistUTMParams } from './helpers';
import { handleSegmentReady } from './segment-helpers';
import { registerAndCall } from './onetrust-helpers';
import TableOfContents from './table-of-content';
+persistUTMParams();
+
// on document ready
document.addEventListener('DOMContentLoaded', function () {
const handleOneTrustLoaded = () => { // One Trust Loaded
@@ -128,4 +130,25 @@ document.addEventListener('DOMContentLoaded', function () {
window.location.href = url;
});
});
+
+ function toggleAccordion() {
+ this.parentElement.classList.toggle('active');
+ const panel = this.nextElementSibling;
+ if (panel.style.maxHeight) {
+ panel.style.maxHeight = null;
+ } else {
+ panel.style.maxHeight = panel.scrollHeight + 'px';
+ }
+ }
+
+ const accordionButtons = Array.from(document.getElementsByClassName('accordion__item-header'));
+ accordionButtons.forEach((el) => {
+ el.addEventListener('click', toggleAccordion);
+ });
+
+ const accordionDarkButtons = Array.from(document.getElementsByClassName('accordion-dark__item-header'));
+ accordionDarkButtons.forEach((el) => {
+ el.addEventListener('click', toggleAccordion);
+ });
+
});
diff --git a/qdrant-landing/themes/qdrant-2024/assets/js/search/search.js b/qdrant-landing/themes/qdrant-2024/assets/js/search/search.js
index 29c88bcb3..a177adec1 100644
--- a/qdrant-landing/themes/qdrant-2024/assets/js/search/search.js
+++ b/qdrant-landing/themes/qdrant-2024/assets/js/search/search.js
@@ -19,4 +19,8 @@ import 'qdrant-page-search/dist/js/search.min.js';
if (/blog/.test(window.location?.pathname)) {
window.initQdrantSearch({ searchApiUrl: 'https://search.qdrant.tech/api/search', section: 'blog', partition: partition });
}
+
+ if (/course/.test(window.location?.pathname)) {
+ window.initQdrantSearch({ searchApiUrl: 'https://search.qdrant.tech/api/search', section: 'course', partition: partition });
+ }
})();
diff --git a/qdrant-landing/themes/qdrant-2024/assets/js/segment-helpers.js b/qdrant-landing/themes/qdrant-2024/assets/js/segment-helpers.js
index c5e0bb402..23c09f858 100644
--- a/qdrant-landing/themes/qdrant-2024/assets/js/segment-helpers.js
+++ b/qdrant-landing/themes/qdrant-2024/assets/js/segment-helpers.js
@@ -140,6 +140,23 @@ const trackInteractionEvent = (properties = {}) => {
)
}
+function cleanSegmentUtmKeys(obj) {
+ const cleanedObject = {};
+ for (const key in obj) {
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
+ // Remove "id" from the end
+ let cleanedKey = key.replace(/id$/, '');
+
+ // Remove "utm_" from the beginning
+ cleanedKey = cleanedKey.replace(/^utm_/, '');
+
+ cleanedObject[cleanedKey] = obj[key];
+ }
+ }
+ return cleanedObject;
+}
+
+
/************************/
/* Handle Segment Ready */
/************************/
@@ -147,15 +164,16 @@ export function handleSegmentReady() {
addUTMToLinks();
analytics.ready(() => {
- const [utmIds, utmParams] = getUTMParams();
+ const utmParams = getUTMParams()
+ const cleanUtmParams = cleanSegmentUtmKeys(utmParams);
+
const isFirstPageView = localStorage.getItem('isFirstPageView');
if (isFirstPageView === 'true') {
analytics.identify({
firstVisitAttribution: {
referrer: document.referrer,
- ...utmParams,
- ...utmIds
+ ...cleanUtmParams
},
hubspotutk: getCookie('hubspotutk'),
});
diff --git a/qdrant-landing/themes/qdrant-2024/layouts/_default/sitemap.xml b/qdrant-landing/themes/qdrant-2024/layouts/_default/sitemap.xml
index 82fb335d3..e87d83128 100644
--- a/qdrant-landing/themes/qdrant-2024/layouts/_default/sitemap.xml
+++ b/qdrant-landing/themes/qdrant-2024/layouts/_default/sitemap.xml
@@ -2,6 +2,15 @@
{{ range .Data.Pages }}
+
+
+
+ {{ if eq .Section "course" }}
+ {{ continue }}
+ {{ end }}
+
+
+
{{- if and (or (eq (isset .Params "sitemapexclude") false) (ne .Params.sitemapExclude true)) (ne .Permalink "") }}
{{ .Permalink }}{{ if not .Lastmod.IsZero }}
diff --git a/qdrant-landing/themes/qdrant-2024/layouts/course/list.html b/qdrant-landing/themes/qdrant-2024/layouts/course/list.html
new file mode 100644
index 000000000..a75dbe254
--- /dev/null
+++ b/qdrant-landing/themes/qdrant-2024/layouts/course/list.html
@@ -0,0 +1,11 @@
+
+
+ {{- partial "head.html" . -}}
+
+
+ {{ partial "documentation/header" . }}
+ {{ partial "course/content-layout" . }}
+
+
+ {{ partial "js.html" . }}
+
diff --git a/qdrant-landing/themes/qdrant-2024/layouts/course/single.html b/qdrant-landing/themes/qdrant-2024/layouts/course/single.html
new file mode 100644
index 000000000..a75dbe254
--- /dev/null
+++ b/qdrant-landing/themes/qdrant-2024/layouts/course/single.html
@@ -0,0 +1,11 @@
+
+
+ {{- partial "head.html" . -}}
+
+
+ {{ partial "documentation/header" . }}
+ {{ partial "course/content-layout" . }}
+
+
+ {{ partial "js.html" . }}
+
diff --git a/qdrant-landing/themes/qdrant-2024/layouts/get_anonymous_id/baseof.html b/qdrant-landing/themes/qdrant-2024/layouts/get_anonymous_id/baseof.html
index 81a6684d3..db1c8e6e5 100644
--- a/qdrant-landing/themes/qdrant-2024/layouts/get_anonymous_id/baseof.html
+++ b/qdrant-landing/themes/qdrant-2024/layouts/get_anonymous_id/baseof.html
@@ -1,6 +1,7 @@
+ Get Anonymous ID
+
+
diff --git a/qdrant-landing/themes/qdrant-2024/layouts/partials/community-features.html b/qdrant-landing/themes/qdrant-2024/layouts/partials/community-features.html
index 82fb97353..11b2ee1ea 100644
--- a/qdrant-landing/themes/qdrant-2024/layouts/partials/community-features.html
+++ b/qdrant-landing/themes/qdrant-2024/layouts/partials/community-features.html
@@ -2,22 +2,6 @@