Add Activepieces integration for workflow automation

- Add Activepieces fork with SmoothSchedule custom piece
- Create integrations app with Activepieces service layer
- Add embed token endpoint for iframe integration
- Create Automations page with embedded workflow builder
- Add sidebar visibility fix for embed mode
- Add list inactive customers endpoint to Public API
- Include SmoothSchedule triggers: event created/updated/cancelled
- Include SmoothSchedule actions: create/update/cancel events, list resources/services/customers

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
poduck
2025-12-18 22:59:37 -05:00
parent 9848268d34
commit 3aa7199503
16292 changed files with 1284892 additions and 4708 deletions

View File

@@ -0,0 +1,18 @@
{
"extends": ["../../../../.eslintrc.json"],
"ignorePatterns": ["!**/*"],
"overrides": [
{
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
"rules": {}
},
{
"files": ["*.ts", "*.tsx"],
"rules": {}
},
{
"files": ["*.js", "*.jsx"],
"rules": {}
}
]
}

View File

@@ -0,0 +1,7 @@
# pieces-qdrant
This library was generated with [Nx](https://nx.dev).
## Building
Run `nx build pieces-qdrant` to build the library.

View File

@@ -0,0 +1,7 @@
{
"name": "@activepieces/piece-qdrant",
"version": "0.2.8",
"dependencies": {
"@qdrant/js-client-rest": "1.7.0"
}
}

View File

@@ -0,0 +1,57 @@
{
"name": "pieces-qdrant",
"$schema": "../../../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "packages/pieces/community/qdrant/src",
"projectType": "library",
"targets": {
"build": {
"executor": "@nx/js:tsc",
"outputs": [
"{options.outputPath}"
],
"options": {
"outputPath": "dist/packages/pieces/community/qdrant",
"tsConfig": "packages/pieces/community/qdrant/tsconfig.lib.json",
"packageJson": "packages/pieces/community/qdrant/package.json",
"main": "packages/pieces/community/qdrant/src/index.ts",
"assets": [
"packages/pieces/community/qdrant/*.md",
{
"input": "packages/pieces/community/qdrant/src/i18n",
"output": "./src/i18n",
"glob": "**/!(i18n.json)"
}
],
"buildableProjectDepsInPackageJsonType": "dependencies",
"updateBuildableProjectDepsInPackageJson": true
},
"dependsOn": [
"^build",
"prebuild"
]
},
"publish": {
"command": "node tools/scripts/publish.mjs pieces-qdrant {args.ver} {args.tag}",
"dependsOn": [
"build"
]
},
"lint": {
"executor": "@nx/eslint:lint",
"outputs": [
"{options.outputFile}"
]
},
"prebuild": {
"executor": "nx:run-commands",
"options": {
"cwd": "packages/pieces/community/qdrant",
"command": "bun install --no-save --silent"
},
"dependsOn": [
"^build"
]
}
},
"tags": []
}

View File

@@ -0,0 +1,55 @@
{
"Make any action on your qdrant vector database": "Führe jede Aktion in deiner qdrant Vektordatenbank aus",
"Server Address": "Serveradresse",
"API KEY": "API-Schlüssel",
"The url of the Qdrant instance.": "Die Url der Instanz von Qdran.",
"Enter the API Key of your Qdrant account": "Geben Sie den API-Schlüssel Ihres Qdrant Kontos ein",
"\n### Using Qdrant cloud\n1. Connect to your [Qdrant cloud account](https://cloud.qdrant.io)\n2. Create a new cluster if it's the first time you use Qdrant\n3. Go to Data Access Control and create a new api key and copy it\n4. Go to clusters, click on the arrow `>` and copy the Cluster URL.\n\n### Using self-hosted Qdrant\nTry to create your own qdrant instance using the [documentation guides](https://qdrant.tech/documentation/guides/)\n": "\n### Mit Qdrant Cloud\n1. Verbinden Sie sich mit Ihrem [Qdrant Cloud Konto](https://cloud.qdrant.io)\n2. Erstellen Sie einen neuen Cluster, wenn es das erste Mal ist, dass Sie Qdrant\n3 verwenden. Gehen Sie zur Data Access Control und erstellen Sie einen neuen Api Key und kopieren Sie ihn\n4. Gehe zu Clustern, klicke auf den Pfeil `>` und kopiere die Cluster-URL.\n\n### Verwendung von selbst gehostetem Qdrant\nVersuche deine eigene Qdrant Instanz mithilfe der [Dokumentationsanleitung](https://qdrant.tech/documentation/guides/)\n zu erstellen",
"Add points to collection": "Punkte zur Sammlung hinzufügen",
"Get Collection List": "Sammlungsliste abrufen",
"Get Collection Infos": "Sammlerinformationen abrufen",
"Delete Collection": "Sammlung löschen",
"Delete Points": "Punkte löschen",
"Get Points": "Punkte erhalten",
"Search Points": "Punkte suchen",
"Insert a point (= embedding or vector + other infos) to a specific collection, if the collection does not exist it will be created": "Füge einen Punkt ein (= Einbetten oder Vektor + andere Infos) in eine bestimmte Sammlung ein, falls die Sammlung nicht existiert, wird sie erstellt",
"Get the list of all the collections of your database": "Holen Sie sich die Liste aller Sammlungen Ihrer Datenbank",
"Get the all the infos of a specific collection": "Holen Sie sich alle Informationen einer bestimmten Sammlung",
"Delete a collection of your database": "Eine Sammlung Ihrer Datenbank löschen",
"Delete points of a specific collection": "Punkte einer bestimmten Sammlung löschen",
"Get the points of a specific collection": "Erhalte die Punkte einer bestimmten Sammlung",
"Search for points closest to your given vector (= embedding)": "Suche nach Punkten, die dem angegebenen Vektor am nächsten liegen (= Einbetten)",
"Collection Name": "Sammlungsname",
"Embeddings": "Einbetten",
"Embeddings Ids": "Einbettungs-Ids",
"Calculation Method of distance": "Berechnungsmethode der Entfernung",
"Additional Payload": "Zusätzliche Payload",
"Storage": "Speicher",
"Choose Points By": "Punkte auswählen von",
"By ids or filtering": "Nach IDs oder Filtern",
"Embedding": "Embedding",
"Must Have": "Muss haben",
"Must Not Have": "Muss nicht vorhanden",
"Negative Vector": "Negativer Vektor",
"Limit Result": "Ergebnis begrenzen",
"The name of the collection needed for this action": "Der Name der Sammlung, die für diese Aktion benötigt wird",
"Embeddings (= vectors) for the points": "Einbettungen (= Vektoren) für die Punkte",
"The ids of the embeddings for the points. If not provided, the ids will be generated automatically": "Die Ids der Einbettungen für die Punkte. Wenn nicht angegeben werden die Ids automatisch generiert",
"The calculation method helps to rank vectors when you want to find the closest points, the method to use depends on the model who's created the embeddings, see the documentation of your model": "Die Berechnungsmethode hilft Vektoren zu platzieren, wenn Sie die nächsten Punkte finden möchten die zu verwendende Methode hängt von dem Modell ab, der die Einbettungen erstellt hat, lesen Sie die Dokumentation Ihres Modells",
"Please follow [payload documentation](https://qdrant.tech/documentation/concepts/payload/) to add additional information to the points.": "Bitte folge der [payload documentation](https://qdrant.tech/documentation/concepts/payload/), um zusätzliche Informationen zu den Punkten hinzuzufügen.",
"Define where points will be stored": "Definieren, wo Punkte gespeichert werden sollen",
"The method to use to get the points": "Die Methode, die verwendet werden soll, um Punkte zu erhalten",
"The infos to select points": "Die Infos, um Punkte auszuwählen",
"The vector (= embedding) you want to search for.": "Der Vektor (= Einbetten), nach dem Sie suchen möchten.",
"If the point have this property in his payload it will be selected": "Wenn der Punkt dieses Objekt in seiner Nutzlast hat, wird es ausgewählt",
"If the point have this property in his payload it will not be selected": "Wenn der Punkt dieses Objekt in seiner Nutzlast hat, wird es nicht ausgewählt",
"The vector (= embedding) you want to be the farthest.": "Der Vektor (= Einbetten), den Sie am weitesten wollen.",
"The max number of results you want to get.": "Die maximale Anzahl an Ergebnissen, die Sie erhalten möchten.",
"Cosine": "Cosine",
"Euclidean": "Euclidean",
"Dot": "Punkt",
"on Disk": "auf Festplatte",
"On Memory": "Im Speicher",
"Ids": "Id",
"Filtering": "Filtern"
}

View File

@@ -0,0 +1,55 @@
{
"Make any action on your qdrant vector database": "Haz cualquier acción en tu base de datos vectorial qdrant",
"Server Address": "Dirección del servidor",
"API KEY": "KEY API",
"The url of the Qdrant instance.": "La url de la instancia Qdrant.",
"Enter the API Key of your Qdrant account": "Introduzca la clave API de su cuenta Qdrant",
"\n### Using Qdrant cloud\n1. Connect to your [Qdrant cloud account](https://cloud.qdrant.io)\n2. Create a new cluster if it's the first time you use Qdrant\n3. Go to Data Access Control and create a new api key and copy it\n4. Go to clusters, click on the arrow `>` and copy the Cluster URL.\n\n### Using self-hosted Qdrant\nTry to create your own qdrant instance using the [documentation guides](https://qdrant.tech/documentation/guides/)\n": "\n### Usando Qdrant cloud\n1. Conéctate a tu [cuenta Qdrant cloud](https://cloud.qdrant.io)\n2. Crea un nuevo clúster si es la primera vez que usas Qdrant\n3. Vaya a Control de Acceso de Datos y cree una nueva clave api y cópiela\n4. Ve a los clusters, haz clic en la flecha `>` y copia la URL del Cluster.\n\n### Usar Qdrant autoalojado\nIntenta crear tu propia instancia qdrant usando las [guías de documentación](https://qdrant.tech/documentation/guides/)\n",
"Add points to collection": "Añadir puntos a la colección",
"Get Collection List": "Obtener Lista de Colección",
"Get Collection Infos": "Obtén infos de colección",
"Delete Collection": "Eliminar colección",
"Delete Points": "Eliminar puntos",
"Get Points": "Obtener puntos",
"Search Points": "Buscar puntos",
"Insert a point (= embedding or vector + other infos) to a specific collection, if the collection does not exist it will be created": "Insertar un punto (= incrustar o vector + otras informaciones) a una colección específica, si la colección no existe será creada",
"Get the list of all the collections of your database": "Obtener la lista de todas las colecciones de tu base de datos",
"Get the all the infos of a specific collection": "Obtén toda la información de una colección específica",
"Delete a collection of your database": "Eliminar una colección de tu base de datos",
"Delete points of a specific collection": "Eliminar puntos de una colección específica",
"Get the points of a specific collection": "Obtén los puntos de una colección específica",
"Search for points closest to your given vector (= embedding)": "Buscar puntos más cercanos a su vector dado (= incrustación)",
"Collection Name": "Nombre de la colección",
"Embeddings": "Incrustaciones",
"Embeddings Ids": "Ids de incrustaciones",
"Calculation Method of distance": "Método de cálculo de distancia",
"Additional Payload": "Carga útil adicional",
"Storage": "Almacenamiento",
"Choose Points By": "Elegir puntos por",
"By ids or filtering": "Por ids o filtrado",
"Embedding": "Embedding",
"Must Have": "Debe tener",
"Must Not Have": "No debe tener",
"Negative Vector": "Vector negativo",
"Limit Result": "Límite resultado",
"The name of the collection needed for this action": "El nombre de la colección necesaria para esta acción",
"Embeddings (= vectors) for the points": "Incrustaciones (= vectores) para los puntos",
"The ids of the embeddings for the points. If not provided, the ids will be generated automatically": "Los ids de las incrustaciones para los puntos. Si no se proporciona, los ids se generarán automáticamente",
"The calculation method helps to rank vectors when you want to find the closest points, the method to use depends on the model who's created the embeddings, see the documentation of your model": "El método de cálculo ayuda a clasificar vectores cuando quieres encontrar los puntos más cercanos. el método a usar depende del modelo que ha creado las incrustaciones, vea la documentación de su modelo",
"Please follow [payload documentation](https://qdrant.tech/documentation/concepts/payload/) to add additional information to the points.": "Por favor, sigue [documentación de carga] (https://qdrant.tech/documentation/concepts/payload/) para añadir información adicional a los puntos.",
"Define where points will be stored": "Definir dónde se almacenarán los puntos",
"The method to use to get the points": "El método a usar para obtener los puntos",
"The infos to select points": "La información para seleccionar puntos",
"The vector (= embedding) you want to search for.": "El vector (= incrustación) que desea buscar.",
"If the point have this property in his payload it will be selected": "Si el punto tiene esta propiedad en su carga será seleccionado",
"If the point have this property in his payload it will not be selected": "Si el punto tiene esta propiedad en su carga no será seleccionado",
"The vector (= embedding) you want to be the farthest.": "El vector (= incrustación) que desea ser el más lejano.",
"The max number of results you want to get.": "El número máximo de resultados que desea obtener.",
"Cosine": "Cosine",
"Euclidean": "Euclidean",
"Dot": "Punto",
"on Disk": "en disco",
"On Memory": "En memoria",
"Ids": "Identidades",
"Filtering": "Filtrando"
}

View File

@@ -0,0 +1,55 @@
{
"Make any action on your qdrant vector database": "Effectuez une action sur votre base de données vectorielle qdrant",
"Server Address": "Adresse du serveur",
"API KEY": "CLÉ DE L'API",
"The url of the Qdrant instance.": "L'url de l'instance Qdrant.",
"Enter the API Key of your Qdrant account": "Entrez la clé API de votre compte Qdrant",
"\n### Using Qdrant cloud\n1. Connect to your [Qdrant cloud account](https://cloud.qdrant.io)\n2. Create a new cluster if it's the first time you use Qdrant\n3. Go to Data Access Control and create a new api key and copy it\n4. Go to clusters, click on the arrow `>` and copy the Cluster URL.\n\n### Using self-hosted Qdrant\nTry to create your own qdrant instance using the [documentation guides](https://qdrant.tech/documentation/guides/)\n": "\n### Utilisation du nuage Qdrant\n1. Connectez-vous à votre [compte cloud Qdrant](https://cloud.qdrant.io)\n2. Créez un nouveau cluster si c'est la première fois que vous utilisez Qdrant\n3. Allez dans Data Access Control et créez une nouvelle clé api et copiez-la\n4. Allez aux clusters, cliquez sur la flèche `>` et copiez l'URL du cluster.\n\n### Utilisation de Qdrant\nEssayez de créer votre propre instance qdrant à l'aide des [guides de documentation](https://qdrant.tech/documentation/guides/)\n",
"Add points to collection": "Ajouter des points à la collection",
"Get Collection List": "Obtenir la liste des collections",
"Get Collection Infos": "Obtenir des infos sur la collection",
"Delete Collection": "Supprimer la collection",
"Delete Points": "Supprimer les points",
"Get Points": "Obtenir des points",
"Search Points": "Points de recherche",
"Insert a point (= embedding or vector + other infos) to a specific collection, if the collection does not exist it will be created": "Insérer un point (= incorporation ou vecteur + autres infos) à une collection spécifique, si la collection n'existe pas, elle sera créée",
"Get the list of all the collections of your database": "Obtenir la liste de toutes les collections de votre base de données",
"Get the all the infos of a specific collection": "Obtenir toutes les infos d'une collection spécifique",
"Delete a collection of your database": "Supprimer une collection de votre base de données",
"Delete points of a specific collection": "Supprimer les points d'une collection spécifique",
"Get the points of a specific collection": "Obtenir les points d'une collection spécifique",
"Search for points closest to your given vector (= embedding)": "Rechercher les points les plus proches de votre vecteur (= intégré)",
"Collection Name": "Nom de la collection",
"Embeddings": "Intégrer",
"Embeddings Ids": "Intégrer les identifiants",
"Calculation Method of distance": "Méthode de calcul de la distance",
"Additional Payload": "Charge supplémentaire",
"Storage": "Storage",
"Choose Points By": "Choisir les points par",
"By ids or filtering": "Par ids ou filtrage",
"Embedding": "Embedding",
"Must Have": "Doit avoir",
"Must Not Have": "Ne doit pas avoir",
"Negative Vector": "Vecteur négatif",
"Limit Result": "Limiter le résultat",
"The name of the collection needed for this action": "Le nom de la collection nécessaire pour cette action",
"Embeddings (= vectors) for the points": "Intégrer (= vecteurs) pour les points",
"The ids of the embeddings for the points. If not provided, the ids will be generated automatically": "Les identifiants des incorporations pour les points. Si non fourni, les identifiants seront générés automatiquement",
"The calculation method helps to rank vectors when you want to find the closest points, the method to use depends on the model who's created the embeddings, see the documentation of your model": "La méthode de calcul aide à classer les vecteurs quand vous voulez trouver les points les plus proches, la méthode à utiliser dépend du modèle qui a créé les embeddings, voir la documentation de votre modèle",
"Please follow [payload documentation](https://qdrant.tech/documentation/concepts/payload/) to add additional information to the points.": "Veuillez suivre [documentation de charge utile](https://qdrant.tech/documentation/concepts/payload/) pour ajouter des informations supplémentaires aux points.",
"Define where points will be stored": "Définir où les points seront stockés",
"The method to use to get the points": "La méthode à utiliser pour obtenir les points",
"The infos to select points": "Les infos pour sélectionner des points",
"The vector (= embedding) you want to search for.": "Le vecteur (= intégré) que vous voulez rechercher.",
"If the point have this property in his payload it will be selected": "Si le point a cette propriété dans son utile, elle sera sélectionnée",
"If the point have this property in his payload it will not be selected": "Si le point a cette propriété dans son utile, elle ne sera pas sélectionnée",
"The vector (= embedding) you want to be the farthest.": "Le vecteur (= embedding) que vous voulez être la farce.",
"The max number of results you want to get.": "Le nombre maximum de résultats que vous voulez obtenir.",
"Cosine": "Cosine",
"Euclidean": "Euclidean",
"Dot": "Point",
"on Disk": "sur disque",
"On Memory": "Sur la mémoire",
"Ids": "Identifiants",
"Filtering": "Filtrage"
}

View File

@@ -0,0 +1,55 @@
{
"Make any action on your qdrant vector database": "Qdrant ベクトルデータベース上の任意のアクションを作成します",
"Server Address": "サーバーアドレス",
"API KEY": "API キー",
"The url of the Qdrant instance.": "QdrantインスタンスのURL。",
"Enter the API Key of your Qdrant account": "QdrantアカウントのAPIキーを入力してください",
"\n### Using Qdrant cloud\n1. Connect to your [Qdrant cloud account](https://cloud.qdrant.io)\n2. Create a new cluster if it's the first time you use Qdrant\n3. Go to Data Access Control and create a new api key and copy it\n4. Go to clusters, click on the arrow `>` and copy the Cluster URL.\n\n### Using self-hosted Qdrant\nTry to create your own qdrant instance using the [documentation guides](https://qdrant.tech/documentation/guides/)\n": "\n### Using Qdrant cloud\n1. Connect to your [Qdrant cloud account](https://cloud.qdrant.io)\n2. Create a new cluster if it's the first time you use Qdrant\n3. Go to Data Access Control and create a new api key and copy it\n4. Go to clusters, click on the arrow `>` and copy the Cluster URL.\n\n### Using self-hosted Qdrant\nTry to create your own qdrant instance using the [documentation guides](https://qdrant.tech/documentation/guides/)\n",
"Add points to collection": "ポイントをコレクションに追加",
"Get Collection List": "コレクションリストを取得",
"Get Collection Infos": "コレクション情報を取得する",
"Delete Collection": "コレクションを削除",
"Delete Points": "制御点の削除",
"Get Points": "Ptを獲得",
"Search Points": "ポイントの検索",
"Insert a point (= embedding or vector + other infos) to a specific collection, if the collection does not exist it will be created": "特定のコレクションに点 (=埋め込みまたはベクトル + その他の情報) を挿入します。コレクションが存在しない場合、それが作成されます。",
"Get the list of all the collections of your database": "データベースのすべてのコレクションのリストを取得します",
"Get the all the infos of a specific collection": "特定のコレクションのすべての情報を取得します",
"Delete a collection of your database": "データベースのコレクションを削除",
"Delete points of a specific collection": "特定のコレクションのポイントを削除",
"Get the points of a specific collection": "特定のコレクションのポイントを取得する",
"Search for points closest to your given vector (= embedding)": "与えられたベクトルに最も近い点を検索 (=埋め込み)",
"Collection Name": "コレクション名",
"Embeddings": "埋め込み",
"Embeddings Ids": "埋め込みID",
"Calculation Method of distance": "距離の計算方法",
"Additional Payload": "追加ペイロード",
"Storage": "ストレージ",
"Choose Points By": "ポイントの選択",
"By ids or filtering": "ID またはフィルタリング順",
"Embedding": "Embedding",
"Must Have": "持っている必要があります",
"Must Not Have": "持たないでください",
"Negative Vector": "負のベクトル",
"Limit Result": "制限結果",
"The name of the collection needed for this action": "このアクションに必要なコレクションの名前",
"Embeddings (= vectors) for the points": "点の埋め込み (= ベクトル)",
"The ids of the embeddings for the points. If not provided, the ids will be generated automatically": "点に対する埋め込みの id です。指定されていない場合、ID は自動的に生成されます。",
"The calculation method helps to rank vectors when you want to find the closest points, the method to use depends on the model who's created the embeddings, see the documentation of your model": "計算方法は、最も近い点を見つけたいときにベクトルをランク付けするのに役立ちます 使用する方法は埋め込みを作成したモデルによって異なります。モデルのドキュメントを参照してください",
"Please follow [payload documentation](https://qdrant.tech/documentation/concepts/payload/) to add additional information to the points.": "ポイントに追加情報を追加するには、[ペイロードドキュメント](https://qdrant.tech/documentation/concepts/payload/)に従ってください。",
"Define where points will be stored": "ポイントが保存される場所を定義します",
"The method to use to get the points": "ポイントの取得に使用する方法",
"The infos to select points": "ポイントを選択するための情報",
"The vector (= embedding) you want to search for.": "検索するベクトル(=埋め込み)を指定します。",
"If the point have this property in his payload it will be selected": "ポイントにペイロード内にこのプロパティがある場合、それが選択されます",
"If the point have this property in his payload it will not be selected": "ポイントにペイロード内にこのプロパティがある場合は選択されません",
"The vector (= embedding) you want to be the farthest.": "遠いベクトル(=埋め込み)になりたい。",
"The max number of results you want to get.": "取得したい結果の最大数。",
"Cosine": "Cosine",
"Euclidean": "Euclidean",
"Dot": "ドット",
"on Disk": "ディスク上",
"On Memory": "On Memory",
"Ids": "Id",
"Filtering": "フィルタリング"
}

View File

@@ -0,0 +1,55 @@
{
"Make any action on your qdrant vector database": "Doe elke actie in je qdrant vector database",
"Server Address": "Server Adres",
"API KEY": "API sleutel",
"The url of the Qdrant instance.": "De url van de Qdrant instantie.",
"Enter the API Key of your Qdrant account": "Voer de API-sleutel van uw Qdrant-account in",
"\n### Using Qdrant cloud\n1. Connect to your [Qdrant cloud account](https://cloud.qdrant.io)\n2. Create a new cluster if it's the first time you use Qdrant\n3. Go to Data Access Control and create a new api key and copy it\n4. Go to clusters, click on the arrow `>` and copy the Cluster URL.\n\n### Using self-hosted Qdrant\nTry to create your own qdrant instance using the [documentation guides](https://qdrant.tech/documentation/guides/)\n": "\n### Gebruik van Qdrant cloud\n1. Verbind met je [Qdrant cloud account](https://cloud.qdrant.io)\n2. Creëer een nieuw cluster als het de eerste keer is dat u Qdrant\n3 gebruikt. Ga naar Data Access Control en maak een nieuwe API key en kopieer deze\n4. Ga naar clusters, klik op de pijl `>` en kopieer de Cluster URL.\n\n### Maak gebruik van zelfgehoste Qdrant\nProbeer je eigen qdrant instantie te maken met behulp van de [documentatiehandleidingen](https://qdrant.tech/documentation/guides/)\n",
"Add points to collection": "Punten toevoegen aan collectie",
"Get Collection List": "Verkrijg collectielijst",
"Get Collection Infos": "Verkrijg Collectie Informatie",
"Delete Collection": "Collectie verwijderen",
"Delete Points": "Verwijder punten",
"Get Points": "Punten ophalen",
"Search Points": "Zoek punten",
"Insert a point (= embedding or vector + other infos) to a specific collection, if the collection does not exist it will be created": "Voeg een punt (= insluiten of vector + andere infos) toe aan een specifieke collectie, als de collectie niet bestaat zal deze worden gemaakt",
"Get the list of all the collections of your database": "Haal de lijst op met alle collecties van je database",
"Get the all the infos of a specific collection": "Krijg alle informatie van een specifieke collectie",
"Delete a collection of your database": "Verwijder een collectie van je database",
"Delete points of a specific collection": "Verwijder punten van een specifieke collectie",
"Get the points of a specific collection": "Krijg de punten van een specifieke collectie",
"Search for points closest to your given vector (= embedding)": "Zoek naar punten die het dichtst bij uw opgegeven vector (= insluiten)",
"Collection Name": "Collectie naam",
"Embeddings": "Insluiten",
"Embeddings Ids": "Insluiten Ids",
"Calculation Method of distance": "Berekening methode van afstand",
"Additional Payload": "Extra Spanning",
"Storage": "Opslagruimte",
"Choose Points By": "Kies punten door",
"By ids or filtering": "Op ids of filtering",
"Embedding": "Embedding",
"Must Have": "Moet hebben",
"Must Not Have": "Moet niet hebben",
"Negative Vector": "Negatieve Vector",
"Limit Result": "Beperk Resultaat",
"The name of the collection needed for this action": "De naam van de collectie die nodig is voor deze actie",
"Embeddings (= vectors) for the points": "Insluiten (= vectors) voor de punten",
"The ids of the embeddings for the points. If not provided, the ids will be generated automatically": "De id's van de embeddings voor de punten. Indien niet aanwezig, zullen de id's automatisch worden gegenereerd",
"The calculation method helps to rank vectors when you want to find the closest points, the method to use depends on the model who's created the embeddings, see the documentation of your model": "De berekeningsmethode helpt bij het rangschikken van vectoren wanneer u de dichtstbijzijnde punten wilt vinden. de te gebruiken methode hangt af van het model wie de embedden heeft gemaakt, bekijk de documentatie van uw model",
"Please follow [payload documentation](https://qdrant.tech/documentation/concepts/payload/) to add additional information to the points.": "Volg [payload documentatie](https://qdrant.tech/documentation/concepts/payload/) om aanvullende informatie toe te voegen aan de punten.",
"Define where points will be stored": "Bepaal waar punten worden opgeslagen",
"The method to use to get the points": "De te gebruiken methode om de punten te krijgen",
"The infos to select points": "De informatie om punten te selecteren",
"The vector (= embedding) you want to search for.": "De vector (= insluiten) waarnaar u wilt zoeken.",
"If the point have this property in his payload it will be selected": "Als het punt deze eigenschap in zijn payload heeft, zal deze geselecteerd worden",
"If the point have this property in his payload it will not be selected": "Als het punt deze eigenschap in zijn payload heeft, zal deze niet worden geselecteerd",
"The vector (= embedding) you want to be the farthest.": "De vector (= insluiten) wil je het verst zijn.",
"The max number of results you want to get.": "Het maximale aantal resultaten dat u wilt krijgen.",
"Cosine": "Cosine",
"Euclidean": "Euclidean",
"Dot": "punt",
"on Disk": "op schijf",
"On Memory": "Op Geheugen",
"Ids": "ID's",
"Filtering": "Filteren"
}

View File

@@ -0,0 +1,55 @@
{
"Make any action on your qdrant vector database": "Faça qualquer ação no seu banco de dados de vetores qdrant",
"Server Address": "Endereço do Servidor",
"API KEY": "CHAVE DE API",
"The url of the Qdrant instance.": "A url da instância Qdrante.",
"Enter the API Key of your Qdrant account": "Digite a Chave da API da sua conta Qdrant",
"\n### Using Qdrant cloud\n1. Connect to your [Qdrant cloud account](https://cloud.qdrant.io)\n2. Create a new cluster if it's the first time you use Qdrant\n3. Go to Data Access Control and create a new api key and copy it\n4. Go to clusters, click on the arrow `>` and copy the Cluster URL.\n\n### Using self-hosted Qdrant\nTry to create your own qdrant instance using the [documentation guides](https://qdrant.tech/documentation/guides/)\n": "\n### Usando a Qdrant cloud\n1. Conecte-se à sua [conta de nuvem Qdrant](https://cloud.qdrant.io)\n2. Crie um novo agrupamento se for a primeira vez que você usar o Qdrant\n3. Vá para o Controle de Acesso de Dados e crie uma nova chave de API e copie-a\n4. Vá para clusters, clique na seta `>` e copie a URL do Cluster.\n\n### Usando Qdrant auto-hospedado\nTente criar sua própria instância qdrant usando os [guias de documentação](https://qdrant.tech/documentation/guides/)\n",
"Add points to collection": "Adicionar pontos à coleção",
"Get Collection List": "Obter lista de coleções",
"Get Collection Infos": "Obter informações de coleção",
"Delete Collection": "Excluir coleção",
"Delete Points": "Apagar Pontos",
"Get Points": "Obter Pontos",
"Search Points": "Buscar Pontos",
"Insert a point (= embedding or vector + other infos) to a specific collection, if the collection does not exist it will be created": "Inserir um ponto (= incorporar ou vetor + outras informações) para uma coleção específica, se a coleção não existir, ela será criada",
"Get the list of all the collections of your database": "Obter a lista de todas as coleções de seu banco de dados",
"Get the all the infos of a specific collection": "Obter todas as informações de uma coleção específica",
"Delete a collection of your database": "Apagar uma coleção do seu banco de dados",
"Delete points of a specific collection": "Excluir pontos de uma coleção específica",
"Get the points of a specific collection": "Obtenha os pontos de uma coleção específica",
"Search for points closest to your given vector (= embedding)": "Pesquise pontos mais próximos do seu vetor (= incorporado)",
"Collection Name": "Nome da coleção",
"Embeddings": "Embutidos",
"Embeddings Ids": "Ids de incorporação",
"Calculation Method of distance": "Método de cálculo da distância",
"Additional Payload": "Payload adicional",
"Storage": "Armazenamento",
"Choose Points By": "Escolha Pontos por",
"By ids or filtering": "Por IDs ou filtragem",
"Embedding": "Embedding",
"Must Have": "Deve Ter",
"Must Not Have": "Não Deve Possuir",
"Negative Vector": "Vetor Negativo",
"Limit Result": "Limite de Resultado",
"The name of the collection needed for this action": "O nome da coleção necessária para esta ação",
"Embeddings (= vectors) for the points": "Embutidos (= vetores) para os pontos",
"The ids of the embeddings for the points. If not provided, the ids will be generated automatically": "Os IDs das incorporações para os pontos. Se não for fornecido, os IDs serão gerados automaticamente",
"The calculation method helps to rank vectors when you want to find the closest points, the method to use depends on the model who's created the embeddings, see the documentation of your model": "O método de cálculo ajuda a classificar os vetores quando você deseja encontrar os pontos mais próximos. o método de uso depende do modelo que criou as incorporações, veja a documentação do seu modelo",
"Please follow [payload documentation](https://qdrant.tech/documentation/concepts/payload/) to add additional information to the points.": "Siga [a documentação do payload](https://qdrant.tech/documentation/concepts/payload/) para adicionar informações adicionais aos pontos.",
"Define where points will be stored": "Definir onde os pontos serão armazenados",
"The method to use to get the points": "O método a ser usado para obter os pontos",
"The infos to select points": "As informações para selecionar pontos",
"The vector (= embedding) you want to search for.": "O vetor (= incorporado) que você deseja procurar.",
"If the point have this property in his payload it will be selected": "Se o ponto tiver essa propriedade em seu payload será selecionado",
"If the point have this property in his payload it will not be selected": "Se o ponto tiver essa propriedade em seu payload não será selecionado",
"The vector (= embedding) you want to be the farthest.": "O vetor (= incorporado) você quer ser o mais distante.",
"The max number of results you want to get.": "O número máximo de resultados que você deseja obter.",
"Cosine": "Cosine",
"Euclidean": "Euclidean",
"Dot": "Ponto",
"on Disk": "no disco",
"On Memory": "Na memória",
"Ids": "identificações",
"Filtering": "Filtro"
}

View File

@@ -0,0 +1,56 @@
{
"Qdrant": "Кррант",
"Make any action on your qdrant vector database": "Сделать любые действия в векторной базе данных qdrant",
"Server Address": "Адрес сервера",
"API KEY": "API KEY",
"The url of the Qdrant instance.": "Адрес экземпляра Qdrant.",
"Enter the API Key of your Qdrant account": "Введите API ключ вашей учетной записи Qdrant",
"\n### Using Qdrant cloud\n1. Connect to your [Qdrant cloud account](https://cloud.qdrant.io)\n2. Create a new cluster if it's the first time you use Qdrant\n3. Go to Data Access Control and create a new api key and copy it\n4. Go to clusters, click on the arrow `>` and copy the Cluster URL.\n\n### Using self-hosted Qdrant\nTry to create your own qdrant instance using the [documentation guides](https://qdrant.tech/documentation/guides/)\n": "\n### Используя облако Qdrant\n1. Подключитесь к вашему [облачному аккаунту Qdrant](https://cloud.qdrant.io)\n2. Создайте новый кластер, если вы используете Qdrant\n3. Перейдите в Control Data Access Control и создайте новый ключ api и скопируйте его\n4. Перейдите к кластерам, нажмите на стрелку `>` и скопируйте URL кластера.\n\n### Использование Qdrant\nПопробуйте создать свой собственный экземпляр qdrant с помощью [руководства по документам](https://qdrant.tech/documentation/guides/)\n",
"Add points to collection": "Добавить очки в коллекцию",
"Get Collection List": "Получить список коллекций",
"Get Collection Infos": "Получить информацию о коллекции",
"Delete Collection": "Удалить коллекцию",
"Delete Points": "Удалить точки",
"Get Points": "Получить очки",
"Search Points": "Поиск точек",
"Insert a point (= embedding or vector + other infos) to a specific collection, if the collection does not exist it will be created": "Вставить точку (= встраивание или вектор + другая информация) в определенную коллекцию, если коллекции не существует, она будет создана",
"Get the list of all the collections of your database": "Получить список всех коллекций вашей базы данных",
"Get the all the infos of a specific collection": "Получить все сведения о конкретной коллекции",
"Delete a collection of your database": "Удалить коллекцию вашей базы данных",
"Delete points of a specific collection": "Удалить точки определенной коллекции",
"Get the points of a specific collection": "Получить очки определенной коллекции",
"Search for points closest to your given vector (= embedding)": "Поиск точек ближе к заданному вектору (= встраивание)",
"Collection Name": "Название коллекции",
"Embeddings": "Встроение",
"Embeddings Ids": "Идентификаторы встраивания",
"Calculation Method of distance": "Метод расчета расстояния",
"Additional Payload": "Дополнительная полезная нагрузка",
"Storage": "Хранилище",
"Choose Points By": "Выберите точки по",
"By ids or filtering": "По идентификаторам или фильтрации",
"Embedding": "Embedding",
"Must Have": "Должно быть",
"Must Not Have": "Не должно быть",
"Negative Vector": "Отрицательный Вектор",
"Limit Result": "Результат ограничен",
"The name of the collection needed for this action": "Название коллекции, необходимой для этого действия",
"Embeddings (= vectors) for the points": "Встраивание (= векторные) для точек",
"The ids of the embeddings for the points. If not provided, the ids will be generated automatically": "Идентификаторы встраиваемых точек будут сгенерированы автоматически",
"The calculation method helps to rank vectors when you want to find the closest points, the method to use depends on the model who's created the embeddings, see the documentation of your model": "Метод расчета помогает ранжировать векторы, когда вы хотите найти ближайшие точки, способ использования зависит от модели, которая создала встраивания, см. документацию вашей модели",
"Please follow [payload documentation](https://qdrant.tech/documentation/concepts/payload/) to add additional information to the points.": "Пожалуйста, следуйте инструкциям [payload documentation](https://qdrant.tech/documentation/concepts/payload/), чтобы добавить дополнительную информацию к точкам.",
"Define where points will be stored": "Определяет, где будут храниться точки",
"The method to use to get the points": "Метод использования для получения очков",
"The infos to select points": "Информация для выбора точек",
"The vector (= embedding) you want to search for.": "Вектор (= встраивание), который вы хотите найти.",
"If the point have this property in his payload it will be selected": "Если точка имеет это имущество в его полезной нагрузке, она будет выбрана",
"If the point have this property in his payload it will not be selected": "Если точка имеет это имущество в его полезной нагрузке, она не будет выбрана",
"The vector (= embedding) you want to be the farthest.": "Вектор (= встраивание) вы хотите быть дальше.",
"The max number of results you want to get.": "Максимальное количество результатов, которое вы хотите получить.",
"Cosine": "Cosine",
"Euclidean": "Euclidean",
"Dot": "Точка",
"on Disk": "на диске",
"On Memory": "На памяти",
"Ids": "Идентификаторы",
"Filtering": "Фильтрация"
}

View File

@@ -0,0 +1,55 @@
{
"Make any action on your qdrant vector database": "Make any action on your qdrant vector database",
"Server Address": "Server Address",
"API KEY": "API KEY",
"The url of the Qdrant instance.": "The url of the Qdrant instance.",
"Enter the API Key of your Qdrant account": "Enter the API Key of your Qdrant account",
"\n### Using Qdrant cloud\n1. Connect to your [Qdrant cloud account](https://cloud.qdrant.io)\n2. Create a new cluster if it's the first time you use Qdrant\n3. Go to Data Access Control and create a new api key and copy it\n4. Go to clusters, click on the arrow `>` and copy the Cluster URL.\n\n### Using self-hosted Qdrant\nTry to create your own qdrant instance using the [documentation guides](https://qdrant.tech/documentation/guides/)\n": "\n### Using Qdrant cloud\n1. Connect to your [Qdrant cloud account](https://cloud.qdrant.io)\n2. Create a new cluster if it's the first time you use Qdrant\n3. Go to Data Access Control and create a new api key and copy it\n4. Go to clusters, click on the arrow `>` and copy the Cluster URL.\n\n### Using self-hosted Qdrant\nTry to create your own qdrant instance using the [documentation guides](https://qdrant.tech/documentation/guides/)\n",
"Add points to collection": "Add points to collection",
"Get Collection List": "Get Collection List",
"Get Collection Infos": "Get Collection Infos",
"Delete Collection": "Delete Collection",
"Delete Points": "Delete Points",
"Get Points": "Get Points",
"Search Points": "Search Points",
"Insert a point (= embedding or vector + other infos) to a specific collection, if the collection does not exist it will be created": "Insert a point (= embedding or vector + other infos) to a specific collection, if the collection does not exist it will be created",
"Get the list of all the collections of your database": "Get the list of all the collections of your database",
"Get the all the infos of a specific collection": "Get the all the infos of a specific collection",
"Delete a collection of your database": "Delete a collection of your database",
"Delete points of a specific collection": "Delete points of a specific collection",
"Get the points of a specific collection": "Get the points of a specific collection",
"Search for points closest to your given vector (= embedding)": "Search for points closest to your given vector (= embedding)",
"Collection Name": "Collection Name",
"Embeddings": "Embeddings",
"Embeddings Ids": "Embeddings Ids",
"Calculation Method of distance": "Calculation Method of distance",
"Additional Payload": "Additional Payload",
"Storage": "Storage",
"Choose Points By": "Choose Points By",
"By ids or filtering": "By ids or filtering",
"Embedding": "Embedding",
"Must Have": "Must Have",
"Must Not Have": "Must Not Have",
"Negative Vector": "Negative Vector",
"Limit Result": "Limit Result",
"The name of the collection needed for this action": "The name of the collection needed for this action",
"Embeddings (= vectors) for the points": "Embeddings (= vectors) for the points",
"The ids of the embeddings for the points. If not provided, the ids will be generated automatically": "The ids of the embeddings for the points. If not provided, the ids will be generated automatically",
"The calculation method helps to rank vectors when you want to find the closest points, the method to use depends on the model who's created the embeddings, see the documentation of your model": "The calculation method helps to rank vectors when you want to find the closest points, the method to use depends on the model who's created the embeddings, see the documentation of your model",
"Please follow [payload documentation](https://qdrant.tech/documentation/concepts/payload/) to add additional information to the points.": "Please follow [payload documentation](https://qdrant.tech/documentation/concepts/payload/) to add additional information to the points.",
"Define where points will be stored": "Define where points will be stored",
"The method to use to get the points": "The method to use to get the points",
"The infos to select points": "The infos to select points",
"The vector (= embedding) you want to search for.": "The vector (= embedding) you want to search for.",
"If the point have this property in his payload it will be selected": "If the point have this property in his payload it will be selected",
"If the point have this property in his payload it will not be selected": "If the point have this property in his payload it will not be selected",
"The vector (= embedding) you want to be the farthest.": "The vector (= embedding) you want to be the farthest.",
"The max number of results you want to get.": "The max number of results you want to get.",
"Cosine": "Cosine",
"Euclidean": "Euclidean",
"Dot": "Dot",
"on Disk": "on Disk",
"On Memory": "On Memory",
"Ids": "Ids",
"Filtering": "Filtering"
}

View File

@@ -0,0 +1,56 @@
{
"Qdrant": "Qdrant",
"Make any action on your qdrant vector database": "Make any action on your qdrant vector database",
"Server Address": "Server Address",
"API KEY": "API KEY",
"The url of the Qdrant instance.": "The url of the Qdrant instance.",
"Enter the API Key of your Qdrant account": "Enter the API Key of your Qdrant account",
"\n### Using Qdrant cloud\n1. Connect to your [Qdrant cloud account](https://cloud.qdrant.io)\n2. Create a new cluster if it's the first time you use Qdrant\n3. Go to Data Access Control and create a new api key and copy it\n4. Go to clusters, click on the arrow `>` and copy the Cluster URL.\n\n### Using self-hosted Qdrant\nTry to create your own qdrant instance using the [documentation guides](https://qdrant.tech/documentation/guides/)\n": "\n### Using Qdrant cloud\n1. Connect to your [Qdrant cloud account](https://cloud.qdrant.io)\n2. Create a new cluster if it's the first time you use Qdrant\n3. Go to Data Access Control and create a new api key and copy it\n4. Go to clusters, click on the arrow `>` and copy the Cluster URL.\n\n### Using self-hosted Qdrant\nTry to create your own qdrant instance using the [documentation guides](https://qdrant.tech/documentation/guides/)\n",
"Add points to collection": "Add points to collection",
"Get Collection List": "Get Collection List",
"Get Collection Infos": "Get Collection Infos",
"Delete Collection": "Delete Collection",
"Delete Points": "Delete Points",
"Get Points": "Get Points",
"Search Points": "Search Points",
"Insert a point (= embedding or vector + other infos) to a specific collection, if the collection does not exist it will be created": "Insert a point (= embedding or vector + other infos) to a specific collection, if the collection does not exist it will be created",
"Get the list of all the collections of your database": "Get the list of all the collections of your database",
"Get the all the infos of a specific collection": "Get the all the infos of a specific collection",
"Delete a collection of your database": "Delete a collection of your database",
"Delete points of a specific collection": "Delete points of a specific collection",
"Get the points of a specific collection": "Get the points of a specific collection",
"Search for points closest to your given vector (= embedding)": "Search for points closest to your given vector (= embedding)",
"Collection Name": "Collection Name",
"Embeddings": "Embeddings",
"Embeddings Ids": "Embeddings Ids",
"Calculation Method of distance": "Calculation Method of distance",
"Additional Payload": "Additional Payload",
"Storage": "Storage",
"Choose Points By": "Choose Points By",
"By ids or filtering": "By ids or filtering",
"Embedding": "Embedding",
"Must Have": "Must Have",
"Must Not Have": "Must Not Have",
"Negative Vector": "Negative Vector",
"Limit Result": "Limit Result",
"The name of the collection needed for this action": "The name of the collection needed for this action",
"Embeddings (= vectors) for the points": "Embeddings (= vectors) for the points",
"The ids of the embeddings for the points. If not provided, the ids will be generated automatically": "The ids of the embeddings for the points. If not provided, the ids will be generated automatically",
"The calculation method helps to rank vectors when you want to find the closest points, the method to use depends on the model who's created the embeddings, see the documentation of your model": "The calculation method helps to rank vectors when you want to find the closest points, the method to use depends on the model who's created the embeddings, see the documentation of your model",
"Please follow [payload documentation](https://qdrant.tech/documentation/concepts/payload/) to add additional information to the points.": "Please follow [payload documentation](https://qdrant.tech/documentation/concepts/payload/) to add additional information to the points.",
"Define where points will be stored": "Define where points will be stored",
"The method to use to get the points": "The method to use to get the points",
"The infos to select points": "The infos to select points",
"The vector (= embedding) you want to search for.": "The vector (= embedding) you want to search for.",
"If the point have this property in his payload it will be selected": "If the point have this property in his payload it will be selected",
"If the point have this property in his payload it will not be selected": "If the point have this property in his payload it will not be selected",
"The vector (= embedding) you want to be the farthest.": "The vector (= embedding) you want to be the farthest.",
"The max number of results you want to get.": "The max number of results you want to get.",
"Cosine": "Cosine",
"Euclidean": "Euclidean",
"Dot": "Dot",
"on Disk": "on Disk",
"On Memory": "On Memory",
"Ids": "Ids",
"Filtering": "Filtering"
}

View File

@@ -0,0 +1,55 @@
{
"Make any action on your qdrant vector database": "Make any action on your qdrant vector database",
"Server Address": "Server Address",
"API KEY": "API KEY",
"The url of the Qdrant instance.": "The url of the Qdrant instance.",
"Enter the API Key of your Qdrant account": "Enter the API Key of your Qdrant account",
"\n### Using Qdrant cloud\n1. Connect to your [Qdrant cloud account](https://cloud.qdrant.io)\n2. Create a new cluster if it's the first time you use Qdrant\n3. Go to Data Access Control and create a new api key and copy it\n4. Go to clusters, click on the arrow `>` and copy the Cluster URL.\n\n### Using self-hosted Qdrant\nTry to create your own qdrant instance using the [documentation guides](https://qdrant.tech/documentation/guides/)\n": "\n### Using Qdrant cloud\n1. Connect to your [Qdrant cloud account](https://cloud.qdrant.io)\n2. Create a new cluster if it's the first time you use Qdrant\n3. Go to Data Access Control and create a new api key and copy it\n4. Go to clusters, click on the arrow `>` and copy the Cluster URL.\n\n### Using self-hosted Qdrant\nTry to create your own qdrant instance using the [documentation guides](https://qdrant.tech/documentation/guides/)\n",
"Add points to collection": "Add points to collection",
"Get Collection List": "Get Collection List",
"Get Collection Infos": "Get Collection Infos",
"Delete Collection": "Delete Collection",
"Delete Points": "Delete Points",
"Get Points": "Get Points",
"Search Points": "Search Points",
"Insert a point (= embedding or vector + other infos) to a specific collection, if the collection does not exist it will be created": "Insert a point (= embedding or vector + other infos) to a specific collection, if the collection does not exist it will be created",
"Get the list of all the collections of your database": "Get the list of all the collections of your database",
"Get the all the infos of a specific collection": "Get the all the infos of a specific collection",
"Delete a collection of your database": "Delete a collection of your database",
"Delete points of a specific collection": "Delete points of a specific collection",
"Get the points of a specific collection": "Get the points of a specific collection",
"Search for points closest to your given vector (= embedding)": "Search for points closest to your given vector (= embedding)",
"Collection Name": "Collection Name",
"Embeddings": "Embeddings",
"Embeddings Ids": "Embeddings Ids",
"Calculation Method of distance": "Calculation Method of distance",
"Additional Payload": "Additional Payload",
"Storage": "存储",
"Choose Points By": "Choose Points By",
"By ids or filtering": "By ids or filtering",
"Embedding": "Embedding",
"Must Have": "Must Have",
"Must Not Have": "Must Not Have",
"Negative Vector": "Negative Vector",
"Limit Result": "Limit Result",
"The name of the collection needed for this action": "The name of the collection needed for this action",
"Embeddings (= vectors) for the points": "Embeddings (= vectors) for the points",
"The ids of the embeddings for the points. If not provided, the ids will be generated automatically": "The ids of the embeddings for the points. If not provided, the ids will be generated automatically",
"The calculation method helps to rank vectors when you want to find the closest points, the method to use depends on the model who's created the embeddings, see the documentation of your model": "The calculation method helps to rank vectors when you want to find the closest points, the method to use depends on the model who's created the embeddings, see the documentation of your model",
"Please follow [payload documentation](https://qdrant.tech/documentation/concepts/payload/) to add additional information to the points.": "Please follow [payload documentation](https://qdrant.tech/documentation/concepts/payload/) to add additional information to the points.",
"Define where points will be stored": "Define where points will be stored",
"The method to use to get the points": "The method to use to get the points",
"The infos to select points": "The infos to select points",
"The vector (= embedding) you want to search for.": "The vector (= embedding) you want to search for.",
"If the point have this property in his payload it will be selected": "If the point have this property in his payload it will be selected",
"If the point have this property in his payload it will not be selected": "If the point have this property in his payload it will not be selected",
"The vector (= embedding) you want to be the farthest.": "The vector (= embedding) you want to be the farthest.",
"The max number of results you want to get.": "The max number of results you want to get.",
"Cosine": "Cosine",
"Euclidean": "Euclidean",
"Dot": "Dot",
"on Disk": "on Disk",
"On Memory": "On Memory",
"Ids": "Ids",
"Filtering": "Filtering"
}

View File

@@ -0,0 +1,61 @@
import {
createPiece,
PieceAuth,
Property,
} from '@activepieces/pieces-framework';
import { PieceCategory } from '@activepieces/shared';
import { addPointsToCollection } from './lib/actions/add-points';
import { deleteCollection } from './lib/actions/delete-collection';
import { deletePoints } from './lib/actions/delete-points';
import { collectionInfos } from './lib/actions/get-collection-infos';
import { collectionList } from './lib/actions/get-collection-list';
import { getPoints } from './lib/actions/get-points';
import { searchPoints } from './lib/actions/search-points';
const qdrantConnectionDescription = `
### Using Qdrant cloud
1. Connect to your [Qdrant cloud account](https://cloud.qdrant.io)
2. Create a new cluster if it's the first time you use Qdrant
3. Go to Data Access Control and create a new api key and copy it
4. Go to clusters, click on the arrow \`>\` and copy the Cluster URL.
### Using self-hosted Qdrant
Try to create your own qdrant instance using the [documentation guides](https://qdrant.tech/documentation/guides/)
`;
export const qdrantAuth = PieceAuth.CustomAuth({
description: qdrantConnectionDescription,
props: {
serverAddress: Property.ShortText({
displayName: 'Server Address',
required: true,
description: 'The url of the Qdrant instance.',
}),
key: PieceAuth.SecretText({
displayName: 'API KEY',
required: true,
description: 'Enter the API Key of your Qdrant account',
}),
},
required: true,
});
export const qdrant = createPiece({
displayName: 'Qdrant',
description: 'Make any action on your qdrant vector database',
auth: qdrantAuth,
minimumSupportedRelease: '0.30.0',
logoUrl: 'https://cdn.activepieces.com/pieces/qdrant.png',
authors: ["ArmanGiau3","kishanprmr","abuaboud"],
categories: [PieceCategory.DEVELOPER_TOOLS],
actions: [
addPointsToCollection,
collectionList,
collectionInfos,
deleteCollection,
deletePoints,
getPoints,
searchPoints,
],
triggers: [],
});

View File

@@ -0,0 +1,118 @@
import { QdrantClient } from '@qdrant/js-client-rest';
import { qdrantAuth } from '../..';
import { createAction, Property } from '@activepieces/pieces-framework';
import { randomUUID } from 'crypto';
import { collectionName, decodeEmbeddings } from '../common';
export const addPointsToCollection = createAction({
auth: qdrantAuth,
requireAuth: true,
name: 'add_points_to_collection',
displayName: 'Add points to collection',
description:
'Insert a point (= embedding or vector + other infos) to a specific collection, if the collection does not exist it will be created',
props: {
collectionName,
embeddings: Property.File({
displayName: 'Embeddings',
description: 'Embeddings (= vectors) for the points',
required: true,
}),
embeddingsIds: Property.Array({
displayName: 'Embeddings Ids',
description:
'The ids of the embeddings for the points. If not provided, the ids will be generated automatically',
required: false,
}),
distance: Property.StaticDropdown({
displayName: 'Calculation Method of distance',
description:
"The calculation method helps to rank vectors when you want to find the closest points, the method to use depends on the model who's created the embeddings, see the documentation of your model",
defaultValue: 'Cosine',
options: {
options: [
{ label: 'Cosine', value: 'Cosine' },
{ label: 'Euclidean', value: 'Euclid' },
{ label: 'Dot', value: 'Dot' },
],
},
required: true,
}),
payload: Property.Json({
displayName: 'Additional Payload',
description: `Please follow [payload documentation](https://qdrant.tech/documentation/concepts/payload/) to add additional information to the points.`,
required: false,
}),
storage: Property.StaticDropdown({
displayName: 'Storage',
description: 'Define where points will be stored',
options: {
options: [
{ label: 'on Disk', value: 'Disk' },
{ label: 'On Memory', value: 'Memory' },
],
},
defaultValue: 'Disk',
required: false,
}),
},
run: async ({ auth, propsValue }) => {
const client = new QdrantClient({
apiKey: auth.props.key,
url: auth.props.serverAddress,
});
const embeddings = decodeEmbeddings(propsValue.embeddings.data);
const numberOfEmbeddings = embeddings.length;
const embeddingsLen = embeddings[0].length;
for (const embedding of embeddings) {
if (embedding.length != embeddingsLen)
throw new Error(
'Embeddings must have the same length (=number of dimensions)'
);
}
const embeddingsIds = (propsValue.embeddingsIds as string[]) ?? [];
const autoEmbeddingsIds = embeddingsIds.length === 0;
if (!autoEmbeddingsIds && embeddingsIds.length !== numberOfEmbeddings)
throw new Error(
'The number of embeddings Ids and the number of embeddings must be the same'
);
const payload = propsValue.payload ?? {};
const points = [];
for (let i = 0; i < numberOfEmbeddings; i++) {
const localPayload = { ...payload };
points.push({
id: autoEmbeddingsIds ? randomUUID() : embeddingsIds[i],
payload: localPayload,
vector: Array.from(embeddings[i]),
});
}
const collections = (await client.getCollections()).collections;
const collectionName = propsValue.collectionName as string;
if (!collections.find((collection) => collection.name === collectionName)) {
await client.createCollection(collectionName, {
vectors: {
size: embeddingsLen,
distance: propsValue.distance as 'Dot' | 'Cosine' | 'Euclid',
on_disk: propsValue.storage === 'Disk',
},
on_disk_payload: propsValue.storage === 'Disk',
});
}
const response = await client.upsert(collectionName, {
points,
wait: true,
});
return response;
},
});

View File

@@ -0,0 +1,23 @@
import { createAction } from '@activepieces/pieces-framework';
import { qdrantAuth } from '../..';
import { QdrantClient } from '@qdrant/js-client-rest';
import { collectionName } from '../common';
export const deleteCollection = createAction({
auth: qdrantAuth,
name: 'delete_collection',
displayName: 'Delete Collection',
description: 'Delete a collection of your database',
props: {
collectionName,
},
run: async ({ auth, propsValue }) => {
const client = new QdrantClient({
apiKey: auth.props.key,
url: auth.props.serverAddress,
});
const collectionName = propsValue.collectionName as string;
const response = await client.deleteCollection(collectionName);
return response;
},
});

View File

@@ -0,0 +1,37 @@
import { createAction } from '@activepieces/pieces-framework';
import { collectionName, convertToFilter, seclectPointsProps } from '../common';
import { qdrantAuth } from '../..';
import { QdrantClient } from '@qdrant/js-client-rest';
export const deletePoints = createAction({
auth: qdrantAuth,
name: 'delete_points',
displayName: 'Delete Points',
description: 'Delete points of a specific collection',
props: {
collectionName,
...seclectPointsProps,
},
run: async ({ auth, propsValue }) => {
const client = new QdrantClient({
apiKey: auth.props.key,
url: auth.props.serverAddress,
});
const collectionName = propsValue.collectionName as string;
if (propsValue.getPointsBy === 'Ids') {
const ids = JSON.parse(propsValue.infosToGetPoint['ids']);
return await client.delete(collectionName, {
points: ids instanceof Array ? ids : [ids],
});
}
const filter = convertToFilter(
propsValue.infosToGetPoint as { must: any; must_not: any }
);
// console.log(JSON.stringify(filter))
return await client.delete(collectionName, {
filter,
wait: true,
});
},
});

View File

@@ -0,0 +1,23 @@
import { QdrantClient } from '@qdrant/js-client-rest';
import { qdrantAuth } from '../..';
import { createAction } from '@activepieces/pieces-framework';
import { collectionName } from '../common';
export const collectionInfos = createAction({
auth: qdrantAuth,
name: 'collection_infos',
displayName: 'Get Collection Infos',
description: 'Get the all the infos of a specific collection',
props: {
collectionName,
},
run: async ({ auth, propsValue }) => {
const client = new QdrantClient({
apiKey: auth.props.key,
url: auth.props.serverAddress,
});
const collectionName = propsValue.collectionName as string;
const collectionInfos = await client.getCollection(collectionName);
return collectionInfos;
},
});

View File

@@ -0,0 +1,19 @@
import { QdrantClient } from '@qdrant/js-client-rest';
import { qdrantAuth } from '../..';
import { createAction } from '@activepieces/pieces-framework';
export const collectionList = createAction({
auth: qdrantAuth,
name: 'collection_list',
displayName: 'Get Collection List',
description: 'Get the list of all the collections of your database',
props: {},
run: async ({ auth }) => {
const client = new QdrantClient({
apiKey: auth.props.key,
url: auth.props.serverAddress,
});
const collections = await client.getCollections();
return collections;
},
});

View File

@@ -0,0 +1,42 @@
import { createAction } from '@activepieces/pieces-framework';
import { seclectPointsProps, convertToFilter, collectionName } from '../common';
import { qdrantAuth } from '../..';
import { QdrantClient } from '@qdrant/js-client-rest';
export const getPoints = createAction({
auth: qdrantAuth,
name: 'get_points',
displayName: 'Get Points',
description: 'Get the points of a specific collection',
props: {
collectionName,
...seclectPointsProps,
},
run: async ({ auth, propsValue }) => {
const client = new QdrantClient({
apiKey: auth.props.key,
url: auth.props.serverAddress,
});
const collectionName = propsValue.collectionName as string;
if (propsValue.getPointsBy === 'Ids') {
let ids = JSON.parse(propsValue.infosToGetPoint['ids']);
try {
ids = JSON.parse(ids);
} catch {
null;
}
return await client.retrieve(collectionName, {
ids: ids instanceof Array ? ids : [ids],
});
} else {
const filtering = propsValue.infosToGetPoint as {
must: any;
must_not: any;
};
return await client.scroll(collectionName, {
filter: convertToFilter(filtering),
});
}
},
});

View File

@@ -0,0 +1,72 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import {
collectionName,
convertToFilter,
decodeEmbeddings,
filteringProps,
} from '../common';
import { qdrantAuth } from '../..';
import { QdrantClient } from '@qdrant/js-client-rest';
export const searchPoints = createAction({
auth: qdrantAuth,
name: 'search_points',
displayName: 'Search Points',
description: 'Search for points closest to your given vector (= embedding)',
props: {
collectionName,
vector: Property.File({
displayName: 'Embedding',
required: true,
description: 'The vector (= embedding) you want to search for.',
}),
...filteringProps,
negativeVector: Property.File({
displayName: 'Negative Vector',
required: false,
description: 'The vector (= embedding) you want to be the farthest.',
}),
limitResult: Property.Number({
displayName: 'Limit Result',
required: false,
description: 'The max number of results you want to get.',
defaultValue: 20,
}),
},
run: async ({ auth, propsValue }) => {
const client = new QdrantClient({
apiKey: auth.props.key,
url: auth.props.serverAddress,
});
const { must, must_not } = propsValue;
const filter = convertToFilter({
must,
must_not,
});
let vector = Array.from(decodeEmbeddings(propsValue.vector.data)[0]);
const negativeVector = propsValue.negativeVector
? Array.from(decodeEmbeddings(propsValue.vector.data)[0])
: undefined;
if (
!(vector instanceof Array) ||
(negativeVector != undefined && !(negativeVector instanceof Array))
)
throw new Error('Vectors should be arrays of numbers');
const limit = propsValue.limitResult ?? 20;
if (negativeVector) {
// math func on: https://qdrant.tech/documentation/concepts/search/?selector=aHRtbCA%2BIGJvZHkgPiBkaXY6bnRoLW9mLXR5cGUoMSkgPiBzZWN0aW9uID4gZGl2ID4gZGl2ID4gZGl2ID4gYXJ0aWNsZSA%2BIGgyOm50aC1vZi10eXBlKDUp
vector = vector.map((vec, i) => vec * 2 + negativeVector[i]);
}
return await client.search(propsValue.collectionName, {
vector,
filter,
limit,
with_payload: true,
});
},
});

View File

@@ -0,0 +1,143 @@
import { Property } from '@activepieces/pieces-framework';
import { qdrantAuth } from '../..';
export const decodeEmbeddings = (embeddingsString: Buffer) => {
let embeddings = embeddingsString.toString('utf-8') as
| string[]
| number[][]
| number[]
| string;
if (embeddings[0] === '[') {
try {
embeddings = JSON.parse(embeddings as string);
} catch {
null;
}
}
if (
typeof embeddings[0] === 'number' ||
(typeof embeddings[0] === 'string' && embeddings[0].length === 1)
) {
embeddings = [embeddings] as string[] | number[][];
}
if (embeddings.length === 0)
throw new Error('Embeddings must contain one element minimum');
if (typeof embeddings[0] === 'string') {
return (embeddings as string[]).map(
(embedding) =>
new Float32Array(
new Uint8Array(Buffer.from(embedding, 'base64')).buffer
)
);
} else {
return (embeddings as number[][]).map(
(embedding) => new Float32Array(embedding)
);
}
};
export const filteringProps = {
must: Property.Object({
displayName: 'Must Have',
description:
'If the point have this property in his payload it will be selected',
required: false,
}),
must_not: Property.Object({
displayName: 'Must Not Have',
description:
'If the point have this property in his payload it will not be selected',
required: false,
}),
};
export const seclectPointsProps = {
getPointsBy: Property.StaticDropdown({
displayName: 'Choose Points By',
description: 'The method to use to get the points',
options: {
options: [
{ label: 'Ids', value: 'Ids' },
{ label: 'Filtering', value: 'Filtering' },
],
},
defaultValue: 'Ids',
required: true,
}),
infosToGetPoint: Property.DynamicProperties({
auth: qdrantAuth,
displayName: 'By ids or filtering',
description: 'The infos to select points',
refreshers: ['getPointsBy'],
props: async (propsValue) => {
const { getPointsBy } = propsValue as unknown as {
getPointsBy: 'Ids' | 'Filtering';
};
if (getPointsBy === 'Ids')
return {
ids: Property.ShortText({
displayName: 'Ids',
description: 'The ids of the points to choose',
required: true,
}),
};
return filteringProps as any;
},
required: true,
}),
};
export const convertToFilter = (infosToGetPoint: {
must: any;
must_not: any;
}) => {
type Tfilter = (
| { has_id: (string | number)[] }
| { key: string; match: { value: any } | { any: any[] } }
)[];
const filter = { must: [], must_not: [] } as {
must: Tfilter;
must_not: Tfilter;
};
for (const getKey in infosToGetPoint) {
for (const key in infosToGetPoint[getKey as keyof typeof filter]) {
let value = infosToGetPoint[getKey as keyof typeof filter][key];
if (['{', '['].includes(value[0])) {
try {
value = JSON.parse(value);
} catch {
null;
}
}
if (['id', 'ids'].includes(key.toLocaleLowerCase())) {
filter[getKey as keyof typeof filter].push({
has_id: value instanceof Array ? value : [value],
});
continue;
}
if (value instanceof Array) {
filter[getKey as keyof typeof filter].push({
key,
match: { any: value },
});
}
filter[getKey as keyof typeof filter].push({ key, match: { value } });
}
}
return filter;
};
export const collectionName = Property.ShortText({
displayName: 'Collection Name',
description: 'The name of the collection needed for this action',
required: true,
});

View File

@@ -0,0 +1,19 @@
{
"extends": "../../../../tsconfig.base.json",
"compilerOptions": {
"module": "commonjs",
"forceConsistentCasingInFileNames": true,
"strict": true,
"noImplicitOverride": true,
"noPropertyAccessFromIndexSignature": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true
},
"files": [],
"include": [],
"references": [
{
"path": "./tsconfig.lib.json"
}
]
}

View File

@@ -0,0 +1,11 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"module": "commonjs",
"outDir": "../../../../dist/out-tsc",
"declaration": true,
"types": ["node"]
},
"exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"],
"include": ["src/**/*.ts"]
}