Instructions
Déterminez ces éléments avant d'écrire du code. Préférez les découvrir dans le dépôt et la demande de l'utilisateur. Ne posez des questions que si le choix change matériellement l'implémentation.
-
Forme du runtime
- Se connectent-ils à un serveur local en cours d'exécution, intègrent-ils Chroma dans des tests, ou configurent-ils le développement local à partir de zéro ?
- Décidez s'ils ont besoin de
chroma run, d'une commande Docker ou service, deHttpClientouChromaClient, ou duEphemeralClientPython.
-
Persistance
- Données locales persistantes : choisissez un chemin de données intentionnel.
- Données de test jetables : utilisez les valeurs par défaut ou un répertoire temporaire.
-
Modèle d'embedding
- Réutilisez le fournisseur d'embedding existant de l'application si possible.
- Sinon, utilisez par défaut
@chroma-core/default-embeden TypeScript ou le défaut local standard en Python. - Si l'utilisateur veut explicitement des embeddings OpenAI en TypeScript, installez et utilisez
@chroma-core/openai.
-
Forme des données indexées
- Déterminez ce qui est indexé, comment il doit être segmenté, et quelles métadonnées sont nécessaires pour le filtrage et les mises à jour.
Routage
-
Serveur local existant
- Confirmez l'hôte et le port avant de modifier le code client.
- Validez que le serveur est accessible avant de supposer que les collections manquent.
-
Développement local frais
- Ajoutez un chemin de démarrage local tel que
chroma runou la commande Docker ou service existante du dépôt. - Utilisez par défaut
localhost:8000sauf si le dépôt utilise déjà une autre adresse.
- Ajoutez un chemin de démarrage local tel que
-
Tests Python ou workflows locaux jetables
- Préférez
EphemeralClientquand la persistance n'est pas nécessaire. - Signalez que les données sont perdues à la sortie du processus.
- Préférez
-
Développement local persistant
- Utilisez un chemin de données stable et rendez la persistance explicite dans le code ou la config.
- Ne basculez pas silencieusement entre les modes éphémère et persistant.
-
Travail d'intégration de recherche
- Utilisez
getOrCreateCollection()en TypeScript ouget_or_create_collection()en Python. - Concevez les IDs de document et les métadonnées pour que les upserts et deletes soient simples.
- Regroupez les écritures lors de la synchronisation de grands ensembles de données.
- Utilisez
Demander ou procéder
Demandez d'abord :
- Choix du modèle d'embedding (implications de coût et de qualité)
- S'ils ont besoin de données locales persistantes
- Comment ils démarrent le serveur local
- Stratégie d'isolation des données multi-locataires
Procédez avec des valeurs par défaut sensées :
- Utilisez
getOrCreateCollection()(TypeScript) /get_or_create_collection()(Python) - Utilisez la similarité cosinus (la plus courante)
- Taille de chunk inférieure à 8 KB
- Stockez les IDs source dans les métadonnées pour les mises à jour/suppressions
- Utilisez un serveur local sur
localhost:8000sauf si le dépôt configure déjà une autre adresse ou utiliseEphemeralClientPython
Ce qu'il faut valider
- Import client correct (
ChromaClient,HttpClient, ouClient) - Paquet de fonction d'embedding installé (TypeScript)
- Serveur local accessible avant de supposer que les collections manquent
- Chemin local et mode de persistance sont intentionnels
Notes d'implémentation
- Chroma local est le défaut approprié pour le développement, les tests et les déploiements auto-hébergés.
- Chroma OSS n'inclut pas les fonctionnalités réservées à Chroma Cloud telles que
Schema()etSearch(). - Si l'utilisateur demande une récupération hybride dense et sparse, traitez cela comme une exigence probable de Chroma Cloud sauf si le dépôt implémente déjà une solution OSS.
- Pour Chroma open source, la récupération dense avec une seule fonction d'embedding est la baseline normale.
Motifs minimaux
Démarrez un serveur Chroma local quand le dépôt en a besoin :
chroma run
Adresse par défaut : localhost:8000.
Client local TypeScript :
import { ChromaClient } from 'chromadb';
import { DefaultEmbeddingFunction } from '@chroma-core/default-embed';
const client = new ChromaClient();
const embeddingFunction = new DefaultEmbeddingFunction();
const collection = await client.getOrCreateCollection({
name: 'my_collection',
embeddingFunction,
});
// Add documents
await collection.add({
ids: ['doc1', 'doc2'],
documents: ['First document text', 'Second document text'],
});
// Query
const results = await collection.query({
queryTexts: ['search query'],
nResults: 5,
});
Client local Python :
import chromadb
client = chromadb.HttpClient(host="localhost", port=8000)
collection = client.get_or_create_collection(name="my_collection")
# Add documents
collection.add(
ids=["doc1", "doc2"] ,
documents=["First document text", "Second document text"],
)
# Query
results = collection.query(
query_texts=["search query"],
n_results=5,
)
En savoir plus
Récupérez llms.txt de Chroma uniquement quand vous avez besoin de détails API ou produit qui ne sont pas déjà dans le dépôt ou cette skill : https://docs.trychroma.com/llms.txt