{"skill":{"slug":"alicloud-ai-search-dashvector","displayName":"Alicloud Ai Search Dashvector","summary":"Build vector retrieval with DashVector using the Python SDK. Use when creating collections, upserting docs, and running similarity search with filters in Cla...","description":"---\nname: alicloud-ai-search-dashvector\ndescription: Build vector retrieval with DashVector using the Python SDK. Use when creating collections, upserting docs, and running similarity search with filters in Claude Code/Codex.\nversion: 1.0.0\n---\n\nCategory: provider\n\n# DashVector Vector Search\n\nUse DashVector to manage collections and perform vector similarity search with optional filters and sparse vectors.\n\n## Prerequisites\n\n- Install SDK (recommended in a venv to avoid PEP 668 limits):\n\n```bash\npython3 -m venv .venv\n. .venv/bin/activate\npython -m pip install dashvector\n```\n- Provide credentials and endpoint via environment variables:\n  - `DASHVECTOR_API_KEY`\n  - `DASHVECTOR_ENDPOINT` (cluster endpoint)\n\n## Normalized operations\n\n### Create collection\n- `name` (str)\n- `dimension` (int)\n- `metric` (str: `cosine` | `dotproduct` | `euclidean`)\n- `fields_schema` (optional dict of field types)\n\n### Upsert docs\n- `docs` list of `{id, vector, fields}` or tuples\n- Supports `sparse_vector` and multi-vector collections\n\n### Query docs\n- `vector` or `id` (one required; if both empty, only filter is applied)\n- `topk` (int)\n- `filter` (SQL-like where clause)\n- `output_fields` (list of field names)\n- `include_vector` (bool)\n\n## Quickstart (Python SDK)\n\n```python\nimport os\nimport dashvector\nfrom dashvector import Doc\n\nclient = dashvector.Client(\n    api_key=os.getenv(\"DASHVECTOR_API_KEY\"),\n    endpoint=os.getenv(\"DASHVECTOR_ENDPOINT\"),\n)\n\n# 1) Create a collection\nret = client.create(\n    name=\"docs\",\n    dimension=768,\n    metric=\"cosine\",\n    fields_schema={\"title\": str, \"source\": str, \"chunk\": int},\n)\nassert ret\n\n# 2) Upsert docs\ncollection = client.get(name=\"docs\")\nret = collection.upsert(\n    [\n        Doc(id=\"1\", vector=[0.01] * 768, fields={\"title\": \"Intro\", \"source\": \"kb\", \"chunk\": 0}),\n        Doc(id=\"2\", vector=[0.02] * 768, fields={\"title\": \"FAQ\", \"source\": \"kb\", \"chunk\": 1}),\n    ]\n)\nassert ret\n\n# 3) Query\nret = collection.query(\n    vector=[0.01] * 768,\n    topk=5,\n    filter=\"source = 'kb' AND chunk >= 0\",\n    output_fields=[\"title\", \"source\", \"chunk\"],\n    include_vector=False,\n)\nfor doc in ret:\n    print(doc.id, doc.fields)\n```\n\n## Script quickstart\n\n```bash\npython skills/ai/search/alicloud-ai-search-dashvector/scripts/quickstart.py\n```\n\nEnvironment variables:\n\n- `DASHVECTOR_API_KEY`\n- `DASHVECTOR_ENDPOINT`\n- `DASHVECTOR_COLLECTION` (optional)\n- `DASHVECTOR_DIMENSION` (optional)\n\nOptional args: `--collection`, `--dimension`, `--topk`, `--filter`.\n\n## Notes for Claude Code/Codex\n\n- Prefer `upsert` for idempotent ingestion.\n- Keep `dimension` aligned to your embedding model output size.\n- Use filters to enforce tenant or dataset scoping.\n- If using sparse vectors, pass `sparse_vector={token_id: weight, ...}` when upserting/querying.\n\n## Error handling\n\n- 401/403: invalid `DASHVECTOR_API_KEY`\n- 400: invalid collection schema or dimension mismatch\n- 429/5xx: retry with exponential backoff\n\n## Validation\n\n```bash\nmkdir -p output/alicloud-ai-search-dashvector\nfor f in skills/ai/search/alicloud-ai-search-dashvector/scripts/*.py; do\n  python3 -m py_compile \"$f\"\ndone\necho \"py_compile_ok\" > output/alicloud-ai-search-dashvector/validate.txt\n```\n\nPass criteria: command exits 0 and `output/alicloud-ai-search-dashvector/validate.txt` is generated.\n\n## Output And Evidence\n\n- Save artifacts, command outputs, and API response summaries under `output/alicloud-ai-search-dashvector/`.\n- Include key parameters (region/resource id/time range) in evidence files for reproducibility.\n\n## Workflow\n\n1) Confirm user intent, region, identifiers, and whether the operation is read-only or mutating.\n2) Run one minimal read-only query first to verify connectivity and permissions.\n3) Execute the target operation with explicit parameters and bounded scope.\n4) Verify results and save output/evidence files.\n\n## References\n\n- DashVector Python SDK: `Client.create`, `Collection.upsert`, `Collection.query`\n\n- Source list: `references/sources.md`\n","topics":["Docs","Sdk"],"tags":{"latest":"1.0.3"},"stats":{"comments":0,"downloads":1472,"installsAllTime":55,"installsCurrent":2,"stars":0,"versions":4},"createdAt":1770768230922,"updatedAt":1778486994957},"latestVersion":{"version":"1.0.3","createdAt":1773221877256,"changelog":"batch publish from alicloud-skills on 2026-03-11","license":"MIT-0"},"metadata":null,"owner":{"handle":"cinience","userId":"s1707avh05gnzr3g6e3m9ka6fh840rtd","displayName":"cinience","image":"https://avatars.githubusercontent.com/u/557426?v=4"},"moderation":null}