UNPKG

@xiaohui-wang/mcpadvisor

Version:

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

55 lines (54 loc) 1.82 kB
/** * OceanBase 搜索提供者实现模块 * 提供基于 OceanBase 的向量搜索功能 */ import { getTextEmbedding } from '../../utils/embedding.js'; import logger from '../../utils/logger.js'; /** * 转换为 MCPServerResponse 格式 */ export const convertToServerResponse = (key, server) => { return { title: server.display_name, description: server.description, github_url: server.repository.url, similarity: 0 // 将在搜索时计算 }; }; /** * 处理并索引数据 */ export const processAndIndexData = async (data, vectorEngine, createSearchableText) => { // 清除现有索引 await vectorEngine.clear(); // 处理每个服务器条目 const entries = Object.entries(data); for (const [key, server] of entries) { // 创建可搜索文本 const searchableText = createSearchableText(server); // 获取文本嵌入 const embedding = getTextEmbedding(searchableText); // 转换为 MCPServerResponse 格式 const serverResponse = convertToServerResponse(key, server); // 添加到向量索引 await vectorEngine.addEntry(key, embedding, serverResponse); } logger.info(`Indexed ${entries.length} MCP servers`); }; /** * 执行向量搜索 */ export const performVectorSearch = async (query, vectorEngine) => { try { // 获取查询嵌入 const queryEmbedding = getTextEmbedding(query); // 使用向量引擎搜索 const results = await vectorEngine.search(queryEmbedding); logger.debug(`Found ${results.length} results from vector search`); return results; } catch (error) { logger.error(`Error in vector search: ${error instanceof Error ? error.message : String(error)}`); throw error; } };