{"passport":{"unfragile":{"@version":"1.0","version":"2026-05","artifact":{"id":"npm-strapi-plugin-embeddings","slug":"strapi-plugin-embeddings","name":"strapi-plugin-embeddings","type":"repo","url":"https://github.com/ATERCATES/strapi-plugin-embeddings#readme","page_url":"https://unfragile.ai/strapi-plugin-embeddings","categories":["frameworks-sdks"],"tags":["strapi","plugin","embeddings","vector","pgvector","openai","semantic-search","ai"],"pricing":{"model":"open_source","free":true,"starting_price":null},"status":"active","verified":false},"capabilities":[{"id":"npm-strapi-plugin-embeddings__cap_0","uri":"capability://data.processing.analysis.automatic.content.embedding.generation","name":"automatic-content-embedding-generation","description":"Automatically generates vector embeddings for Strapi content entries using configurable AI providers (OpenAI, Anthropic, or local models). Hooks into Strapi's lifecycle events to trigger embedding generation on content creation/update, storing dense vectors in PostgreSQL via pgvector extension. Supports batch processing and selective field embedding based on content type configuration.","intents":["I want embeddings automatically created whenever content is published in Strapi without manual API calls","I need to embed specific fields (title, description) from my content types while skipping others","I want to switch between OpenAI and local embedding models without code changes"],"best_for":["Strapi v5 users building semantic search features","teams wanting to add AI capabilities to existing Strapi CMS without external services","developers needing cost-effective local embeddings via Ollama or similar"],"limitations":["Requires pgvector PostgreSQL extension — incompatible with MySQL, SQLite, or other databases","Embedding generation is synchronous by default — large batch operations may block content updates","No built-in retry logic for failed API calls to embedding providers","Field selection is static per content type — cannot dynamically choose fields at query time"],"requires":["Strapi v5.x","PostgreSQL 12+ with pgvector extension installed","Node.js 18+","API key for OpenAI/Anthropic OR local embedding model endpoint (Ollama, Hugging Face Inference)"],"input_types":["Strapi content entries (JSON)","text fields from content types","configuration objects (provider, model, field mappings)"],"output_types":["vector embeddings (1536-dim for OpenAI, variable for others)","stored in PostgreSQL pgvector column","metadata (embedding timestamp, provider, model version)"],"categories":["data-processing-analysis","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"npm-strapi-plugin-embeddings__cap_1","uri":"capability://search.retrieval.semantic.search.across.content","name":"semantic-search-across-content","description":"Executes semantic similarity search against embedded content using vector distance calculations (cosine, L2) in PostgreSQL pgvector. Accepts natural language queries, converts them to embeddings via the same provider used for content, and returns ranked results based on vector similarity. Supports filtering by content type, status, and custom metadata before similarity ranking.","intents":["I want to search my Strapi content by meaning, not just keywords (e.g., 'articles about climate change' finds related content)","I need to combine semantic search with traditional filters (only published articles, specific categories)","I want to retrieve top-K most similar content entries for recommendation or related-content features"],"best_for":["content-heavy Strapi sites needing intelligent search (blogs, documentation, knowledge bases)","developers building recommendation engines or 'related content' widgets","teams replacing Elasticsearch/Algolia with vector-native search"],"limitations":["Search quality depends entirely on embedding model quality — poor embeddings = poor search results","Requires re-embedding query text for each search — adds latency vs pre-computed similarity indices","No built-in query expansion, synonym handling, or semantic caching","pgvector similarity operations scale linearly with corpus size — may slow on 100k+ documents without proper indexing","No support for hybrid search (combining semantic + keyword/BM25 ranking)"],"requires":["PostgreSQL 12+ with pgvector extension and IVFFlat or HNSW index created","content entries must have pre-computed embeddings (via automatic-content-embedding-generation)","same embedding provider API key as used for content generation"],"input_types":["natural language query string","optional filter parameters (content type, status, date range)","similarity threshold (0-1)"],"output_types":["ranked array of content entries with similarity scores","metadata (relevance score, embedding distance, matched fields)"],"categories":["search-retrieval","memory-knowledge"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"npm-strapi-plugin-embeddings__cap_2","uri":"capability://tool.use.integration.multi.provider.embedding.abstraction","name":"multi-provider-embedding-abstraction","description":"Provides a unified interface for embedding generation across multiple AI providers (OpenAI, Anthropic, local models via Ollama/Hugging Face). Abstracts provider-specific API signatures, authentication, rate limiting, and response formats into a single configuration-driven system. Allows switching providers without code changes by updating environment variables or Strapi admin panel settings.","intents":["I want to use OpenAI embeddings in production but test with local Ollama models without code changes","I need to switch embedding providers if one becomes unavailable or too expensive","I want to support multiple embedding models (text-embedding-3-small vs text-embedding-3-large) with different cost/quality tradeoffs"],"best_for":["teams evaluating different embedding models and providers","cost-conscious developers wanting to use cheaper local models","enterprises with provider lock-in concerns or multi-cloud strategies"],"limitations":["Embedding dimensions vary by provider (OpenAI: 1536, Ollama: varies) — switching providers requires schema migration","No automatic model versioning — switching models may produce incompatible embeddings for existing content","Rate limiting and quota management are provider-specific — no unified rate limiter across providers","Local models (Ollama) require separate infrastructure setup and maintenance"],"requires":["API keys for chosen provider(s) stored in environment variables","for local models: Ollama/Hugging Face Inference server running and accessible","Strapi admin access to configure provider settings"],"input_types":["provider name (openai, anthropic, ollama, huggingface)","model identifier (gpt-3.5-turbo, claude-3, nomic-embed-text)","text to embed (string or array of strings)"],"output_types":["vector embeddings (float array)","metadata (model used, dimensions, generation timestamp)"],"categories":["tool-use-integration","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"npm-strapi-plugin-embeddings__cap_3","uri":"capability://memory.knowledge.pgvector.backed.vector.storage","name":"pgvector-backed-vector-storage","description":"Stores and indexes embeddings directly in PostgreSQL using the pgvector extension, leveraging native vector data types and similarity operators (cosine, L2, inner product). Automatically creates IVFFlat or HNSW indices for efficient approximate nearest neighbor search at scale. Integrates with Strapi's database layer to persist embeddings alongside content metadata in a single transactional store.","intents":["I want to store embeddings in my existing PostgreSQL database without adding a separate vector database","I need ACID transactions across content updates and embedding changes","I want to query embeddings with SQL directly for custom analytics or integrations"],"best_for":["teams already using PostgreSQL who want to avoid operational overhead of separate vector DBs","projects with strict data residency or compliance requirements (GDPR, HIPAA)","developers needing transactional consistency between content and embeddings"],"limitations":["pgvector performance degrades significantly without proper indexing (IVFFlat/HNSW) — requires manual tuning","IVFFlat index creation is blocking and slow on large datasets (100k+ vectors)","No built-in sharding or horizontal scaling — single PostgreSQL instance is bottleneck","Vector dimension size is fixed per column — cannot store variable-dimension embeddings","Approximate nearest neighbor search (IVFFlat) trades accuracy for speed — may miss relevant results"],"requires":["PostgreSQL 12+ with pgvector extension installed (apt install postgresql-12-pgvector or similar)","Strapi database configured to use PostgreSQL (not SQLite or MySQL)","sufficient disk space for vector indices (rough estimate: 8 bytes × dimensions × number of vectors)"],"input_types":["vector embeddings (float arrays of fixed dimension)","content metadata (IDs, timestamps, content type)","index configuration (index type: IVFFlat or HNSW, similarity metric)"],"output_types":["stored vectors in pgvector columns","similarity search results with distance scores","raw SQL query results for custom analytics"],"categories":["memory-knowledge","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"npm-strapi-plugin-embeddings__cap_4","uri":"capability://automation.workflow.content.type.aware.field.mapping","name":"content-type-aware-field-mapping","description":"Allows fine-grained configuration of which fields from each Strapi content type should be embedded, supporting text concatenation, field weighting, and selective embedding. Configuration is stored in Strapi's plugin settings and applied during content lifecycle hooks. Supports nested field selection (e.g., embedding both title and author.name from related entries) and dynamic field filtering based on content status or visibility.","intents":["I want to embed only the title and body of blog posts, not metadata like view counts","I need to combine multiple fields (title + description) into a single embedding for better semantic representation","I want different content types (articles vs products) to use different embedding strategies"],"best_for":["Strapi sites with heterogeneous content types requiring different embedding strategies","teams wanting to optimize embedding costs by excluding low-value fields","developers building content-specific search (e.g., product search vs documentation search)"],"limitations":["Field mapping is static per content type — cannot dynamically change fields at query time","No support for computed fields or custom transformations before embedding","Nested field selection may require additional database queries, adding latency","Field weighting is not supported — all selected fields are concatenated with equal importance"],"requires":["Strapi admin access to configure plugin settings","knowledge of content type schema and field names"],"input_types":["content type name","array of field names to embed","optional field concatenation rules"],"output_types":["configuration object stored in Strapi settings","concatenated text string passed to embedding provider"],"categories":["automation-workflow","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"npm-strapi-plugin-embeddings__cap_5","uri":"capability://automation.workflow.batch.embedding.reindexing","name":"batch-embedding-reindexing","description":"Provides bulk operations to re-embed existing content entries in batches, useful for model upgrades, provider migrations, or fixing corrupted embeddings. Implements chunked processing to avoid memory exhaustion and includes progress tracking, error recovery, and dry-run mode. Can be triggered via Strapi admin UI or API endpoint with configurable batch size and concurrency.","intents":["I upgraded my embedding model and need to re-embed all 50k existing articles without downtime","I switched from OpenAI to Ollama embeddings and need to regenerate all vectors","Some embeddings failed to generate — I want to retry just the failed entries"],"best_for":["large Strapi installations (10k+ content entries) needing bulk embedding operations","teams migrating between embedding providers or models","developers maintaining embedding quality over time"],"limitations":["Batch operations are CPU/API-bound — large batches may timeout or hit rate limits","No built-in scheduling — long-running reindexing must be triggered manually or via cron","Progress is not persisted — interrupting a batch operation loses progress and must restart","Dry-run mode shows what would be reindexed but doesn't validate embedding quality","No rollback mechanism — cannot easily revert to previous embeddings if new ones are poor"],"requires":["sufficient API quota for embedding provider (OpenAI charges per token)","database write access to update embedding columns","configurable batch size based on available memory and API rate limits"],"input_types":["content type filter (optional)","batch size (number of entries per API call)","concurrency level (parallel batches)","dry-run flag"],"output_types":["progress report (entries processed, failed, skipped)","error log with details of failed entries","updated embeddings in PostgreSQL"],"categories":["automation-workflow","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"npm-strapi-plugin-embeddings__cap_6","uri":"capability://automation.workflow.embedding.lifecycle.hooks","name":"embedding-lifecycle-hooks","description":"Integrates with Strapi's content lifecycle events (create, update, publish, unpublish) to automatically trigger embedding generation or deletion. Hooks are registered at plugin initialization and execute synchronously or asynchronously based on configuration. Supports conditional hooks (e.g., only embed published content) and custom pre/post-processing logic.","intents":["I want embeddings created automatically whenever content is published, without manual API calls","I need to delete embeddings when content is unpublished or deleted to keep search results fresh","I want to skip embedding generation for draft content to save API costs"],"best_for":["Strapi users wanting fully automated embedding workflows","teams with high content velocity needing real-time embedding updates","developers building content management systems with integrated AI features"],"limitations":["Synchronous hooks block content operations — slow embedding providers will slow down content updates","No built-in error handling — failed embeddings don't prevent content save but leave inconsistent state","Hooks execute in Strapi's main process — cannot be offloaded to background workers without custom code","No conditional logic beyond simple status checks — complex rules require custom hook implementations","Lifecycle events don't include previous version data — cannot compute embedding deltas"],"requires":["Strapi v5.x with plugin system enabled","embedding provider configured and accessible"],"input_types":["lifecycle event (create, update, publish, unpublish, delete)","content entry data","hook configuration (enabled, async, conditional)"],"output_types":["embedding generation triggered","embedding deletion triggered","hook execution logs"],"categories":["automation-workflow","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"npm-strapi-plugin-embeddings__cap_7","uri":"capability://data.processing.analysis.embedding.metadata.tracking","name":"embedding-metadata-tracking","description":"Stores and tracks metadata about each embedding including generation timestamp, embedding model version, provider used, and content hash. Enables detection of stale embeddings when content changes or models are upgraded. Metadata is queryable for auditing, debugging, and analytics purposes.","intents":["I want to know which embeddings were generated with which model version for debugging search quality issues","I need to detect when content has changed since its embedding was created to trigger re-embedding","I want to audit which provider generated each embedding for cost allocation or compliance"],"best_for":["teams managing multiple embedding models or providers","developers debugging search quality issues","organizations with compliance or audit requirements"],"limitations":["Content hash computation adds overhead to embedding generation","Metadata storage increases database size (rough estimate: 200 bytes per embedding)","No built-in alerting for stale embeddings — requires custom monitoring","Metadata is not used for automatic re-embedding decisions — requires manual intervention"],"requires":["additional database columns for metadata storage","hash function for content comparison (SHA-256 or similar)"],"input_types":["embedding generation event","content data","model and provider information"],"output_types":["metadata object (timestamp, model, provider, content hash)","stored in database alongside embedding"],"categories":["data-processing-analysis","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"npm-strapi-plugin-embeddings__cap_8","uri":"capability://automation.workflow.strapi.admin.ui.integration","name":"strapi-admin-ui-integration","description":"Provides a dedicated admin panel UI within Strapi for configuring embedding settings, monitoring embedding status, and triggering manual operations. Includes forms for provider configuration, field mapping per content type, and batch operation controls. Displays embedding statistics (total embedded entries, last update time, storage size) and error logs.","intents":["I want to configure embeddings without editing code or environment variables","I need to see which content entries have embeddings and which are missing","I want to manually trigger re-embedding for specific content types from the admin panel"],"best_for":["non-technical Strapi administrators managing embeddings","teams wanting to avoid code deployments for configuration changes","developers needing visibility into embedding status and health"],"limitations":["Admin UI is read-only for some operations (cannot edit embeddings directly, only regenerate)","No real-time progress updates for long-running batch operations","Configuration changes in admin UI are not version-controlled — no audit trail of who changed what","Admin UI requires Strapi admin role — cannot delegate to non-admin users"],"requires":["Strapi admin access","modern web browser with JavaScript enabled"],"input_types":["form inputs (provider name, API key, field selections)","action triggers (regenerate, delete, reindex)"],"output_types":["configuration saved to Strapi settings","operation status and logs displayed in UI"],"categories":["automation-workflow","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0}],"trust":{"score":28,"verified":false,"data_access_risk":"high","permissions":["Strapi v5.x","PostgreSQL 12+ with pgvector extension installed","Node.js 18+","API key for OpenAI/Anthropic OR local embedding model endpoint (Ollama, Hugging Face Inference)","PostgreSQL 12+ with pgvector extension and IVFFlat or HNSW index created","content entries must have pre-computed embeddings (via automatic-content-embedding-generation)","same embedding provider API key as used for content generation","API keys for chosen provider(s) stored in environment variables","for local models: Ollama/Hugging Face Inference server running and accessible","Strapi admin access to configure provider settings"],"failure_modes":["Requires pgvector PostgreSQL extension — incompatible with MySQL, SQLite, or other databases","Embedding generation is synchronous by default — large batch operations may block content updates","No built-in retry logic for failed API calls to embedding providers","Field selection is static per content type — cannot dynamically choose fields at query time","Search quality depends entirely on embedding model quality — poor embeddings = poor search results","Requires re-embedding query text for each search — adds latency vs pre-computed similarity indices","No built-in query expansion, synonym handling, or semantic caching","pgvector similarity operations scale linearly with corpus size — may slow on 100k+ documents without proper indexing","No support for hybrid search (combining semantic + keyword/BM25 ranking)","Embedding dimensions vary by provider (OpenAI: 1536, Ollama: varies) — switching providers requires schema migration","builder identity is not verified yet","no observed match outcomes yet"],"rank_breakdown":{"adoption":0.08898617212581883,"quality":0.28,"ecosystem":0.6000000000000001,"match_graph":0.25,"freshness":0.6,"weights":{"adoption":0.3,"quality":0.2,"ecosystem":0.15,"match_graph":0.3,"freshness":0.05}},"observed_outcomes":{"matches":0,"success_rate":0,"avg_confidence":0,"top_intents":[],"last_matched_at":null},"maintenance":{"status":"active","updated_at":"2026-05-24T12:16:23.902Z","last_scraped_at":"2026-04-22T08:08:13.653Z","last_commit":null},"community":{"stars":null,"forks":null,"weekly_downloads":388,"model_downloads":null,"model_likes":null}},"distribution":{"claim_url":"https://unfragile.ai/submit?claim=strapi-plugin-embeddings","compare_url":"https://unfragile.ai/compare?artifact=strapi-plugin-embeddings"}},"signature":"vG/IMwEnDmjlimJVTKksXepfnuEX27D9AMM3BUH8lLtQCYa7fydLERGJBwAW8pTiuOPz44cUCUBVKJUKOfjeAQ==","signedAt":"2026-06-20T12:48:44.877Z","signedBy":"unfragile.ai","version":1},"_links":{"self":"https://unfragile.ai/api/v1/passport/strapi-plugin-embeddings","artifact":"https://unfragile.ai/strapi-plugin-embeddings","verify":"https://unfragile.ai/api/v1/verify?slug=strapi-plugin-embeddings","publicKey":"https://unfragile.ai/api/v1/trust-passport-public-key","spec":"https://unfragile.ai/trust","schema":"https://unfragile.ai/schema.json","docs":"https://unfragile.ai/docs"}}