@memberjunction/ai-recommendations-rex
MemberJunction recommendation provider for the rasa.io Rex recommendation engine. Retrieves content recommendations from Rex and saves them into MJ Recommendation/Recommendation Item entities.
Overview
This package implements RecommendationProviderBase for the rasa.io Rex engine. It authenticates with the Rex API, looks up vector IDs from MJ Entity Record Documents, requests content-based recommendations via Rex's /suggest endpoint, and persists the results as RecommendationItem entities in the MemberJunction database.
graph TD
PROVIDER["RexRecommendationsProvider"] --> TOKEN["Get Rex Access Token\n(/tokens)"]
PROVIDER --> DOCS["Load Entity Record Documents\n(Vector IDs)"]
PROVIDER --> SUGGEST["Get Recommendations\n(/suggest)"]
PROVIDER --> SAVE["Save Recommendation Items\n(MJ Entities)"]
TOKEN --> REXAPI["Rex API"]
SUGGEST --> REXAPI
DOCS --> RUNVIEW["RunView\n(Entity Record Documents)"]
SAVE --> MJDB["MJ Database"]
style PROVIDER fill:#7c5295,stroke:#563a6b,color:#fff
style TOKEN fill:#2d6a9f,stroke:#1a4971,color:#fff
style DOCS fill:#2d6a9f,stroke:#1a4971,color:#fff
style SUGGEST fill:#2d6a9f,stroke:#1a4971,color:#fff
style SAVE fill:#2d6a9f,stroke:#1a4971,color:#fff
style REXAPI fill:#b8762f,stroke:#8a5722,color:#fff
style RUNVIEW fill:#2d8659,stroke:#1a5c3a,color:#fff
style MJDB fill:#2d8659,stroke:#1a5c3a,color:#fff
Features
- Rex API integration: Authenticates and retrieves recommendations from the rasa.io Rex engine
- Batch processing: Processes recommendations in configurable batch sizes (default 200)
- Vector ID resolution: Looks up Pinecone vector IDs from MJ Entity Record Documents
- Type mapping: Configurable mapping from Rex content types to MJ entity names
- Score clamping: Normalizes recommendation scores to a 0-1 probability range
- Error tracking: Optionally logs errors to a MJ List for review
- Auto-registration: Registers with MJ class factory as
"rasa.io Rex"
Installation
npm install @memberjunction/ai-recommendations-rex
Configuration
Set the following environment variables:
REX_API_HOST | Yes | Rex API base URL for authentication |
REX_RECOMMEND_HOST | Yes | Rex recommendation service URL |
REX_USERNAME | Yes | Rex API username |
REX_PASSWORD | Yes | Rex API password |
REX_API_KEY | Yes | Rex API key |
REX_BATCH_SIZE | No | Batch size for processing (default: 200) |
Usage
import { RexRecommendationsProvider } from '@memberjunction/ai-recommendations-rex';
import { RecommendationRequest } from '@memberjunction/ai-recommendations';
const provider = new RexRecommendationsProvider();
const request: RecommendationRequest = {
Recommendations: recommendationEntities,
RunID: 'run-id',
CurrentUser: contextUser,
Options: {
EntityDocumentID: 'entity-doc-id',
type: 'course',
filters: [{ type: 'course', max_results: 10 }],
TypeMap: {
'course': 'Contents',
'person': 'Contributors'
}
}
};
const result = await provider.Recommend(request);
if (result.Success) {
console.log('Recommendations generated successfully');
} else {
console.error('Errors:', result.Errors);
}
Key Dependencies
@memberjunction/ai-recommendations | RecommendationProviderBase abstract class |
@memberjunction/core | Metadata, RunView, LogError, LogStatus |
@memberjunction/core-entities | Entity types (RecommendationEntity, RecommendationItemEntity, etc.) |
@memberjunction/global | @RegisterClass decorator |
axios | HTTP client for Rex API calls |
Related Packages
License
ISC