UNPKG

@xiaohui-wang/mcpadvisor

Version:

MCP Advisor & Installation - Find the right MCP server for your needs

74 lines (73 loc) 2.38 kB
import { InMemoryVectorEngine } from './providers/offline/vectorEngine.js'; import { OceanBaseVectorEngine } from './providers/oceanbase/vectorEngine.js'; import { MeilisearchVectorEngine } from './providers/meilisearch/vectorEngine.js'; import { VECTOR_ENGINE_TYPE, OCEANBASE_URL } from '../config/constants.js'; import logger from '../utils/logger.js'; /** * 向量引擎类型 */ export var VectorEngineType; (function (VectorEngineType) { VectorEngineType["MEMORY"] = "memory"; VectorEngineType["OCEANBASE"] = "oceanbase"; VectorEngineType["MEILISEARCH"] = "meilisearch"; })(VectorEngineType || (VectorEngineType = {})); /** * 解析向量引擎类型 */ const parseEngineType = (typeString) => { if (typeString === 'oceanbase') { return VectorEngineType.OCEANBASE; } if (typeString === 'meilisearch') { return VectorEngineType.MEILISEARCH; } return VectorEngineType.MEMORY; }; /** * 创建内存向量引擎 */ const createMemoryEngine = () => { logger.info('Creating in-memory vector engine'); return new InMemoryVectorEngine(); }; /** * 创建 OceanBase 向量引擎 */ const createOceanBaseEngine = () => { logger.info('Creating OceanBase vector engine'); return new OceanBaseVectorEngine(); }; /** * 创建 Meilisearch 向量引擎 */ const createMeilisearchEngine = () => { logger.info('Creating Meilisearch vector engine'); return new MeilisearchVectorEngine(); }; /** * 向量引擎工厂 */ export class VectorEngineFactory { /** * 创建向量引擎实例 */ static createEngine(type) { // 如果未指定类型,使用环境变量配置 const engineType = type || parseEngineType(VECTOR_ENGINE_TYPE); switch (engineType) { case VectorEngineType.OCEANBASE: // 如果选择了 OceanBase 但未配置 URL,则回退到内存引擎 if (!OCEANBASE_URL) { logger.warn('OCEANBASE_URL is not set, falling back to in-memory vector engine'); return createMemoryEngine(); } return createOceanBaseEngine(); case VectorEngineType.MEILISEARCH: return createMeilisearchEngine(); case VectorEngineType.MEMORY: default: return createMemoryEngine(); } } }