Skip to main content
Glama

search_memories_similarity

Find similar memories by comparing vector embeddings to retrieve relevant information from persistent storage for AI systems.

Instructions

Search memories by vector similarity

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
embeddingYesQuery embedding vector
limitNoMaximum number of results
thresholdNoMinimum similarity threshold

Implementation Reference

  • Core handler function implementing vector similarity search using pgvector cosine distance on memory embeddings, filtering active memories above threshold, ordered by similarity.
    async searchMemoriesBySimilarity(queryEmbedding, limit = 10, threshold = 0.7) { try { const embeddingVector = `[${queryEmbedding.join(',')}]`; const results = await this.db .select({ id: schema.memories.id, type: schema.memories.type, content: schema.memories.content, importance: schema.memories.importance, accessCount: schema.memories.accessCount, createdAt: schema.memories.createdAt, relevanceScore: schema.memories.relevanceScore, similarity: sql`1 - (${schema.memories.embedding} <=> ${embeddingVector}::vector)`.as('similarity') }) .from(schema.memories) .where( and( eq(schema.memories.status, 'active'), sql`1 - (${schema.memories.embedding} <=> ${embeddingVector}::vector) >= ${threshold}` ) ) .orderBy(sql`${schema.memories.embedding} <=> ${embeddingVector}::vector`) .limit(limit); return results; } catch (error) { const truncatedEmbedding = queryEmbedding.length > 10 ? `[${queryEmbedding.slice(0, 5).join(',')}...${queryEmbedding.slice(-5).join(',')}] (${queryEmbedding.length} values)` : `[${queryEmbedding.join(',')}]`; console.error('Error searching memories by similarity with embedding:', truncatedEmbedding, error.message); throw error; } }
  • mcp.js:546-552 (registration)
    MCP tool registration in CallToolRequestSchema handler switch, calling MemoryManager.searchMemoriesBySimilarity with parsed arguments.
    case "search_memories_similarity": const similarMemories = await memoryManager.searchMemoriesBySimilarity( args.embedding, args.limit || 10, args.threshold || 0.7 ); return { content: [{ type: "text", text: JSON.stringify(similarMemories, null, 2) }] };
  • Tool schema definition including input validation for embedding vector, optional limit and threshold.
    { name: "search_memories_similarity", description: "Search memories by vector similarity", inputSchema: { type: "object", properties: { embedding: { type: "array", items: { type: "number" }, description: "Query embedding vector" }, limit: { type: "integer", description: "Maximum number of results", default: 10 }, threshold: { type: "number", description: "Minimum similarity threshold", default: 0.7 } }, required: ["embedding"] } },

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/QuixiAI/agi-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server