diff --git a/.gitignore b/.gitignore
index ad4176f7b21..cb81a64a94a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -34,6 +34,7 @@ twitter_cookies.json
 timeline_cache.json
 
 *.sqlite
+agent
 characters/
 
 packages/core/src/providers/cache
diff --git a/packages/adapter-postgres/src/index.ts b/packages/adapter-postgres/src/index.ts
index f2563563022..b8937ff4bfb 100644
--- a/packages/adapter-postgres/src/index.ts
+++ b/packages/adapter-postgres/src/index.ts
@@ -290,42 +290,13 @@ export class PostgresDatabaseAdapter extends DatabaseAdapter {
         match_count: number;
         unique: boolean;
     }): Promise<Memory[]> {
-        const client = await this.pool.connect();
-        try {
-            let sql = `
-                SELECT *,
-                1 - (embedding <-> $3) as similarity
-                FROM memories
-                WHERE type = $1 AND "roomId" = $2
-            `;
-
-            if (params.unique) {
-                sql += ` AND "unique" = true`;
-            }
-
-            sql += ` AND 1 - (embedding <-> $3) >= $4
-                ORDER BY embedding <-> $3
-                LIMIT $5`;
-
-            const { rows } = await client.query(sql, [
-                params.tableName,
-                params.roomId,
-                params.embedding,
-                params.match_threshold,
-                params.match_count,
-            ]);
-
-            return rows.map((row) => ({
-                ...row,
-                content:
-                    typeof row.content === "string"
-                        ? JSON.parse(row.content)
-                        : row.content,
-                similarity: row.similarity,
-            }));
-        } finally {
-            client.release();
-        }
+        return await this.searchMemoriesByEmbedding(params.embedding, {
+            match_threshold: params.match_threshold,
+            count: params.match_count,
+            roomId: params.roomId,
+            unique: params.unique,
+            tableName: params.tableName,
+        });
     }
 
     async getMemories(params: {
diff --git a/packages/client-discord/src/messages.ts b/packages/client-discord/src/messages.ts
index 4d1631664b2..95cc7df29a5 100644
--- a/packages/client-discord/src/messages.ts
+++ b/packages/client-discord/src/messages.ts
@@ -423,10 +423,10 @@ export class MessageManager {
                 roomId,
                 content,
                 createdAt: message.createdTimestamp,
-                embedding: embeddingZeroVector,
             };
 
             if (content.text) {
+                await this.runtime.messageManager.addEmbeddingToMemory(memory);
                 await this.runtime.messageManager.createMemory(memory);
             }
 
diff --git a/packages/core/src/memory.ts b/packages/core/src/memory.ts
index 350f65c54a8..ea91a615604 100644
--- a/packages/core/src/memory.ts
+++ b/packages/core/src/memory.ts
@@ -164,6 +164,7 @@ export class MemoryManager implements IMemoryManager {
             elizaLogger.debug("Memory already exists, skipping");
             return;
         }
+
         await this.runtime.databaseAdapter.createMemory(
             memory,
             this.tableName,
diff --git a/packages/core/src/runtime.ts b/packages/core/src/runtime.ts
index dee40e7cfdc..0315e5e9240 100644
--- a/packages/core/src/runtime.ts
+++ b/packages/core/src/runtime.ts
@@ -348,11 +348,14 @@ export class AgentRuntime implements IAgentRuntime {
                         text: knowledgeItem,
                     },
                 });
+
                 const fragments = await splitChunks(knowledgeItem, 1200, 200);
                 for (const fragment of fragments) {
                     const embedding = await embed(this, fragment);
                     await this.knowledgeManager.createMemory({
-                        id: stringToUuid(fragment),
+                        // We namespace the knowledge base uuid to avoid id
+                        // collision with the document above.
+                        id: stringToUuid(knowledgeId + fragment),
                         roomId: this.agentId,
                         agentId: this.agentId,
                         userId: this.agentId,