feat(chroma): Add Chroma vector database adaptor (Task #11)

Implements native Chroma integration for RAG pipelines as part of
Week 2 vector store integrations.

## Features

- **Chroma-compatible format** - Direct `collection.add()` support
- **Deterministic IDs** - Stable IDs for consistent re-imports
- **Metadata structure** - Compatible with Chroma's metadata filtering
- **Collection naming** - Auto-derived from skill name
- **Example code** - Complete usage examples with persistent/in-memory options

## Output Format

JSON file containing:
- `documents`: Array of document strings
- `metadatas`: Array of metadata dicts
- `ids`: Array of deterministic IDs
- `collection_name`: Suggested collection name

## CLI Integration

```bash
skill-seekers package output/django --target chroma
# → output/django-chroma.json
```

## Files Added

- src/skill_seekers/cli/adaptors/chroma.py (360 lines)
  * Complete Chroma adaptor implementation
  * ID generation from content hash
  * Metadata structure compatible with Chroma
  * Example code for add/query/filter/update/delete

## Files Modified

- src/skill_seekers/cli/adaptors/__init__.py
  * Import ChromaAdaptor
  * Register "chroma" in ADAPTORS

- src/skill_seekers/cli/package_skill.py
  * Add "chroma" to --target choices

- src/skill_seekers/cli/main.py
  * Add "chroma" to --target choices

## Testing

Tested with ansible skill:
-  Document format correct
-  Metadata structure compatible
-  IDs deterministic
-  Collection name derived correctly
-  CLI integration working

Output: output/ansible-chroma.json (9.3 KB, 1 document)

## Week 2 Progress

-  Task #10: Weaviate adaptor (Complete)
-  Task #11: Chroma adaptor (Complete)
-  Task #12: FAISS helpers (Next)
-  Task #13: Qdrant adaptor

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
yusyus
2026-02-05 23:40:10 +03:00
parent baccbf9d81
commit 6fd8474e9f
4 changed files with 390 additions and 2 deletions

View File

@@ -155,7 +155,7 @@ Examples:
parser.add_argument(
"--target",
choices=["claude", "gemini", "openai", "markdown", "langchain", "llama-index", "weaviate"],
choices=["claude", "gemini", "openai", "markdown", "langchain", "llama-index", "weaviate", "chroma"],
default="claude",
help="Target LLM platform (default: claude)",
)