# @memberjunction/ai-cohere
MemberJunction AI provider for Cohere. It implements `BaseReranker` for semantic document reranking (Cohere Rerank API) and `BaseEmbeddings` for text and multimodal embeddings (Cohere Embed v4), useful for improving relevance and powering retrieval in RAG (Retrieval-Augmented Generation) pipelines.
## Architecture
```mermaid
graph TD
A["CohereReranker
(Provider)"] -->|extends| B["BaseReranker
(@memberjunction/ai)"]
A -->|wraps| C["CohereClient
(cohere-ai SDK)"]
C -->|calls| D["Cohere Rerank API"]
D -->|returns| E["Ranked Documents
with Relevance Scores"]
B -->|registered via| F["@RegisterClass"]
style A fill:#7c5295,stroke:#563a6b,color:#fff
style B fill:#2d6a9f,stroke:#1a4971,color:#fff
style C fill:#2d8659,stroke:#1a5c3a,color:#fff
style D fill:#2d8659,stroke:#1a5c3a,color:#fff
style E fill:#b8762f,stroke:#8a5722,color:#fff
style F fill:#b8762f,stroke:#8a5722,color:#fff
```
## Features
- **Semantic Reranking**: Reorder documents by relevance to a query using neural models
- **Multiple Models**: Support for `rerank-v3.5` (English) and `rerank-multilingual-v3.0` (100+ languages)
- **Relevance Scoring**: Documents scored 0-1 with fine-grained relevance ranking
- **RAG Pipeline Integration**: Designed for use in retrieval-augmented generation workflows
- **Context-Aware**: Enhanced query processing for better relevance evaluation
### Embeddings (CohereEmbedding)
- **Multimodal Embeddings**: Embed text and images into a shared vector space (Cohere Embed v4)
- **Text and Batch**: Single and batch text embedding (1536-dim default)
- **Configurable Input Type**: Optimize embeddings for document storage or query retrieval
## Installation
```bash
npm install @memberjunction/ai-cohere
```
## Usage
```typescript
import { CohereReranker } from '@memberjunction/ai-cohere';
const reranker = new CohereReranker('your-cohere-api-key', 'rerank-v3.5');
const results = await reranker.Rerank({
query: 'What is the capital of France?',
documents: [
{ id: '1', text: 'Paris is the capital of France.' },
{ id: '2', text: 'London is the capital of England.' },
{ id: '3', text: 'France is a country in Europe.' }
],
topK: 5
});
// Results sorted by relevance score (0-1)
for (const result of results) {
console.log(`${result.documentId}: ${result.relevanceScore}`);
}
```
### Embeddings
```typescript
import { CohereEmbedding } from '@memberjunction/ai-cohere';
const embedding = new CohereEmbedding('your-cohere-api-key');
// Text (1536-dim vector)
const text = await embedding.EmbedText({ text: 'a golden retriever in the snow' });
// Multimodal: text + image fused into ONE vector
const multimodal = await embedding.EmbedContent({
content: [
{ type: 'text', content: 'product photo:' },
{ type: 'image_url', content: '', mimeType: 'image/png' },
],
});
console.log(multimodal.vector.length); // 1536
```
## Supported Models
| Model | Description |
|-------|-------------|
| `rerank-v3.5` | Latest English reranker with best accuracy (default) |
| `rerank-multilingual-v3.0` | Supports 100+ languages |
## Class Registration
- `CohereReranker` -- Registered as `CohereLLM` via `@RegisterClass(BaseReranker, 'CohereLLM')`.
- `CohereEmbedding` -- Registered via `@RegisterClass(BaseEmbeddings, 'CohereEmbedding')`.
## Dependencies
- `@memberjunction/ai` - Core AI abstractions (BaseReranker)
- `@memberjunction/global` - Class registration
- `cohere-ai` - Official Cohere SDK