Skip to main content

searchcli-volcengine-ai-search

CLI for integrating Volcengine AI Search, recommendation, and conversational retrieval into agent and business systems

الانتقال إلى التثبيت

معلومات المصدر

المستودع
reason-machines/devtools-skills
آخر نشاط في المصدر
٢٨ مايو ٢٠٢٦ في ٠٠:٥٣
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٤
التفرعات
٠

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
searchcli-volcengine-ai-search
description
CLI for integrating Volcengine AI Search, recommendation, and conversational retrieval into agent and business systems
triggers
["integrate AI search into my application","set up Volcengine search CLI","configure AI-powered search and recommendations","onboard data to Volcengine AI Search","build conversational retrieval with SearchCLI","tune search quality with Viking","create item search with SearchCLI","run search evaluation and tuning"]
# SearchCLI (Volcengine AI Search) > Skill by [ara.so](https://ara.so) — Devtools Skills collection. SearchCLI is the open-source CLI for Volcengine AI Search. It provides stable, tunable search, recommendation, and conversational retrieval capabilities for agent systems and business applications. Built with TypeScript, it offers agent-friendly workflows with installable skills, dry-runs, confirmation gates, and automated quality tuning. ## What It Does - **Item & Catalog Search**: Build search on structured business data - **Recommendation Flows**: Connect recommendations to application scenes and user behavior - **Conversational Retrieval**: Create RAG-style chat experiences grounded in application search - **Agent Workflows**: Onboard data, configure applications, and validate behavior with reviewable steps - **Automated Tuning**: Text-similarity evaluation and query tuning with LLM-based relevance judging ## Installation ### Requirements - Node.js 20 or newer - Git - Volcengine AK/SK with AI Search access ### Install SearchCLI ```bash git clone git@github.com:volcengine/SearchCLI.git vs cd vs bash ./scripts/install.sh ``` ### Install as Agent Skills (for AI Agents) ```bash npx skills add "git@github.com:volcengine/SearchCLI.git" -y -g ``` This installs bundled skills: - `vs-shared` - `vs-item-onboarding` - `vs-search` - `vs-search-tuning` - `vs-chat` - `vs-recommend` ## Authentication ### Using Environment Variables If `VIKING_AK` and `VIKING_SK` are already in your environment: ```bash vs auth import-env vs auth status --json ``` ### Interactive Login ```bash vs auth login vs auth status --json vs doctor --json ``` ### LLM Configuration (for Search Tuning) For query generation and LLM-based relevance judging: ```bash # Interactive setup vs llm login vs llm status --json # Or import from environment # Requires: VIKING_LLM_BASE_URL, VIKING_LLM_API_KEY, VIKING_LLM_MODEL vs llm import-env vs llm status --json ``` Verify LLM connectivity: ```bash vs search tune llm-check --live --json ``` ## Core Command Groups ### Authentication & Setup ```bash vs auth login # Interactive authentication vs auth import-env # Import AK/SK from environment vs auth status --json # Check auth status vs llm login # Configure LLM for tuning vs llm import-env # Import LLM config from env vs doctor --json # System health check ``` ### Item Onboarding ```bash vs item profile --file ./items.json --pretty vs item plan --file ./items.json --goal "Build item search" vs item apply --plan-dir ./.viking/item-plans/<plan> --dry-run vs item apply --plan-dir ./.viking/item-plans/<plan> --confirm-review --wait-ready --run-trials ``` ### Dataset Management ```bash vs dataset create --data @dataset-create.json vs dataset ingest --dataset-id <id> --fields @<file> vs dataset list --json vs dataset describe --dataset-id <id> --json ``` ### Application Management ```bash vs app list --json vs app describe --app-id <id> --json vs app create --data @app-config.json vs app update --app-id <id> --data @update.json ``` ### Search Operations ```bash vs search run --app-id <id> --query "search term" --json vs search tune query-generate --dataset-id <id> --output ./queries.json vs search tune plan --queries @queries.json --dataset-id <id> vs search tune run --plan-dir ./plan --output ./results.json vs search tune report --results @results.json --pretty ``` ### Recommendation ```bash vs recommend run --app-id <id> --user-id <uid> --json ``` ### Conversational Retrieval ```bash vs chat run --app-id <id> --query "What are the best products?" --json ``` ## Workflows ### Dataset + App Provisioning (Full Onboarding) Complete workflow for creating both dataset and search application: ```bash # 1. Profile your data vs item profile --file ./items.json --pretty # 2. Generate provisioning plan vs item plan --file ./items.json --goal "Build product search" # 3. Review plan with dry-run vs item apply --plan-dir ./.viking/item-plans/<plan-id> --dry-run # 4. Execute with confirmations and runtime verification vs item apply \ --plan-dir ./.viking/item-plans/<plan-id> \ --confirm-review \ --wait-ready \ --run-trials ``` ### Dataset-Only Provisioning When you only need data ingestion without application setup: ```bash # Generate dataset-only plan vs item plan --file ./items.json --goal "Ingest product data" --skip-app # Create dataset vs dataset create --data @dataset-create.json # Ingest data vs dataset ingest --dataset-id <dataset-id> --fields @<normalized-items-artifact> ``` The `--skip-app` flag works with `vs item provision` and `vs item apply` as a guardrail. ### Video Dataset Provisioning Always specify `--type video` explicitly for video datasets: ```bash # Dataset + App vs item profile --file ./videos.jsonl --type video --pretty vs item plan --file ./videos.jsonl --type video --goal "Build video search" vs item apply --plan-dir ./.viking/item-plans/<plan> --confirm-review --wait-ready # Dataset-only vs item plan --file ./videos.jsonl --type video --goal "Video data" --skip-app vs dataset create --data @dataset-create.json vs dataset ingest --dataset-id <id> --fields @<artifact> ``` **Important**: For video datasets, prefer `dataset-create.json` over `--schema @schema.json` to include `DataFieldConfig` and avoid `MissingParameter.DefaultFieldStrategy` errors. ### Search Quality Tuning Automated evaluation and tuning workflow: ```bash # 1. Generate evaluation queries vs search tune query-generate \ --dataset-id <dataset-id> \ --output ./eval-queries.json # 2. Create tuning plan vs search tune plan \ --queries @eval-queries.json \ --dataset-id <dataset-id> # 3. Run evaluation vs search tune run \ --plan-dir ./.viking/search-tune-plans/<plan-id> \ --output ./results.json # 4. Generate report vs search tune report \ --results @results.json \ --pretty ``` ## Code Examples ### TypeScript: Item Data Structure ```typescript // items.json - Product catalog [ { "id": "prod-001", "name": "Wireless Headphones", "description": "High-quality Bluetooth headphones with noise cancellation", "category": "Electronics", "price": 149.99, "tags": ["audio", "bluetooth", "noise-canceling"], "in_stock": true }, { "id": "prod-002", "name": "Smart Watch", "description": "Fitness tracking smartwatch with heart rate monitor", "category": "Wearables", "price": 299.99, "tags": ["fitness", "health", "smartwatch"], "in_stock": true } ] ``` ### TypeScript: Dataset Create Payload ```typescript // dataset-create.json { "Name": "product-catalog-v1", "Type": "item", "Schema": { "Fields": [ { "FieldName": "id", "FieldType": "String", "IsPrimaryKey": true }, { "FieldName": "name", "FieldType": "String" }, { "FieldName": "description", "FieldType": "Text" }, { "FieldName": "price", "FieldType": "Float" }, { "FieldName": "tags", "FieldType": "List<String>" } ] }, "DataFieldConfig": { "DefaultFields": { "Title": "name", "Body": "description" } } } ``` ### TypeScript: Search Application Config ```typescript // app-config.json { "Name": "product-search-app", "DatasetId": "<dataset-id>", "SearchConfig": { "RankingStrategy": "TextSimilarity", "TextSimilarityConfig": { "Fields": ["name", "description"], "Weights": { "name": 2.0, "description": 1.0 } } } } ``` ### Bash: Complete Onboarding Script ```bash #!/bin/bash set -e # Environment check vs doctor --json # 1. Profile and plan vs item profile --file ./products.json --pretty vs item plan --file ./products.json --goal "E-commerce product search" # Get the latest plan directory PLAN_DIR=$(ls -dt ./.viking/item-plans/* | head -1) # 2. Review with dry-run vs item apply --plan-dir "$PLAN_DIR" --dry-run # 3. Execute provisioning vs item apply \ --plan-dir "$PLAN_DIR" \ --confirm-review \ --wait-ready \ --run-trials echo "Onboarding complete. Check ./.viking/item-plans/ for artifacts." ``` ### TypeScript: Programmatic Search ```typescript import { execSync } from 'child_process'; function runSearch(appId: string, query: string): any { const result = execSync( `vs search run --app-id ${appId} --query "${query}" --json`, { encoding: 'utf-8' } ); return JSON.parse(result); } function runRecommendation(appId: string, userId: string): any { const result = execSync( `vs recommend run --app-id ${appId} --user-id ${userId} --json`, { encoding: 'utf-8' } ); return JSON.parse(result); } // Usage const searchResults = runSearch('app-123', 'wireless headphones'); console.log('Search results:', searchResults); const recommendations = runRecommendation('app-123', 'user-456'); console.log('Recommendations:', recommendations); ``` ### TypeScript: Evaluation Query Generation ```typescript // eval-queries.json structure [ { "query": "wireless bluetooth headphones", "expectedRelevance": { "prod-001": "high", "prod-003": "medium" } }, { "query": "fitness tracking watch", "expectedRelevance": { "prod-002": "high" } } ] ``` ## Configuration ### Environment Variables ```bash # Required for authentication export VIKING_AK="your-access-key" export VIKING_SK="your-secret-key" # Optional: LLM for search tuning export VIKING_LLM_BASE_URL="https://api.openai.com/v1" export VIKING_LLM_API_KEY="sk-..." export VIKING_LLM_MODEL="gpt-4" # Then import vs auth import-env vs llm import-env ``` ### Credential Storage SearchCLI stores credentials securely: - **API Keys**: Local secure credential store (not plain text config) - **LLM Base URL & Model**: Stored as non-secret config - **Plan Artifacts**: `./.viking/` directory (safe to version control after removing sensitive data) ### Output Formats Most commands support `--json` for machine-readable output: ```bash vs auth status --json vs dataset list --json vs search run --app-id <id> --query "test" --json ``` Use `--pretty` for human-readable formatting: ```bash vs item profile --file ./items.json --pretty vs search tune report --results @results.json --pretty ``` ## Common Patterns
عرض على GitHub
ملف SKILL.md هذا كبير جدا، لذلك يعرض SkillsMP القسم الاول فقط هنا. عرض على GitHub