chroma-local

Par chroma-core · agent-skills

À utiliser lorsque l'utilisateur a besoin de Chroma auto-hébergé ou local pour la recherche sémantique, notamment `ChromaClient`, `HttpClient`, ou `EphemeralClient` Python, la persistance locale, Docker ou `chroma run`, ou Chroma OSS sans les fonctionnalités de Chroma Cloud.

npx skills add https://github.com/chroma-core/agent-skills --skill chroma-local

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.

  1. 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, de HttpClient ou ChromaClient, ou du EphemeralClient Python.
  2. 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.
  3. Modèle d'embedding

    • Réutilisez le fournisseur d'embedding existant de l'application si possible.
    • Sinon, utilisez par défaut @chroma-core/default-embed en 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.
  4. 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 run ou la commande Docker ou service existante du dépôt.
    • Utilisez par défaut localhost:8000 sauf si le dépôt utilise déjà une autre adresse.
  • Tests Python ou workflows locaux jetables

    • Préférez EphemeralClient quand la persistance n'est pas nécessaire.
    • Signalez que les données sont perdues à la sortie du processus.
  • 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 ou get_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.

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:8000 sauf si le dépôt configure déjà une autre adresse ou utilise EphemeralClient Python

Ce qu'il faut valider

  • Import client correct (ChromaClient, HttpClient, ou Client)
  • 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() et Search().
  • 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

Skills similaires