> ## Documentation Index
> Fetch the complete documentation index at: https://docs.conare.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Démarrage rapide

> Provisionnez une clé ConareDB, insérez des lignes vectorisées dans un namespace et lancez une recherche hybride vecteur plus mot-clé en trois requêtes.

<Steps>
  <Step title="Obtenir une clé">
    Provisionnez une clé `cdb_...` depuis la [console ConareDB](https://db.conare.ai). Les clés sont limitées à votre préfixe de namespace avec les permissions `read`/`write`, affichées une seule fois, et envoyées comme jeton Bearer :

    ```bash theme={null}
    export CONAREDB_API_KEY='cdb_...'
    ```
  </Step>

  <Step title="Écrire des lignes">
    Les namespaces sont créés à la première écriture — pas de schéma, pas de cérémonie. Chaque ligne est un nœud avec un `id` externe, des propriétés et un vecteur optionnel. La dimension du vecteur est fixée par la première écriture vectorisée et validée à chaque écriture suivante.

    ```bash theme={null}
    curl -s https://db.conare.ai/v1/namespaces/acme-docs/query \
      -H "Authorization: Bearer $CONAREDB_API_KEY" \
      -d '{
        "request_type": "write",
        "query": {
          "queries": [{"Query": {"name": "w", "condition": null, "steps": [
            {"UpsertN": {"id": "chunk-123", "label": "chunk",
              "props": {"text": "Refund policy: 30 days, no questions.", "created_at_ms": 1720000000000, "project": "docs"},
              "vector": [0.0123, -0.0456]}}
          ]}}],
          "returns": ["w"]
        }
      }'
    ```

    `UpsertN` est un remplacement de ligne complet clé sur `id` — réécrivez le même `id` et l'ancienne ligne (et son vecteur) est remplacée, non fusionnée.
  </Step>

  <Step title="Rechercher">
    Une seule requête exécute jusqu'à trois branches classées — ANN vectoriel, mot-clé BM25 et chronologique — sur le même jeu de lignes filtré :

    ```bash theme={null}
    curl -s https://db.conare.ai/v1/namespaces/acme-docs/search \
      -H "Authorization: Bearer $CONAREDB_API_KEY" \
      -d '{
        "label": "chunk",
        "filter": ["project", "Eq", "docs"],
        "include_props": ["text"],
        "branches": {
          "vector":  {"embedding": [0.0119, -0.0442], "top_k": 10},
          "keyword": {"query": "refund policy", "top_k": 10}
        }
      }'
    ```

    ```json theme={null}
    {
      "vector":  {"hits": [{"id": "chunk-123", "score": 0.98, "props": {"text": "..."}}], "server_us": 412},
      "keyword": {"hits": [{"id": "chunk-123", "score": 14.2, "props": {"text": "..."}}], "mode": "and", "server_us": 200}
    }
    ```

    Les branches renvoient des listes classées indépendantes afin que vous contrôliez la fusion (RRF ou la vôtre) côté client — la même architecture qu'utilise le plan mémoire de Conare lui-même.
  </Step>
</Steps>

<Note>
  Besoin de vecteurs ? `POST /api/v1/embeddings` sur l'[API Embeddings](/embeddings/overview) renvoie des vecteurs de 1024 dimensions normalisés à l'unité, prêts à être stockés.
</Note>

Ensuite : la [référence complète de la recherche](/db/search), les [écritures et l'ingestion en masse](/db/writes), ou les [namespaces et clés](/db/namespaces).
