Skip to content

Commit 7b19dd0

Browse files
authored
Merge pull request elizaOS#1379 from ryanleecode/fix/postgres-adapter-settings
fix: postgres adapter settings not being applied
2 parents fc6c216 + 9330ba9 commit 7b19dd0

File tree

2 files changed

+46
-8
lines changed

2 files changed

+46
-8
lines changed

packages/adapter-postgres/src/index.ts

+14
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import {
2323
elizaLogger,
2424
getEmbeddingConfig,
2525
DatabaseAdapter,
26+
EmbeddingProvider,
2627
} from "@elizaos/core";
2728
import fs from "fs";
2829
import { fileURLToPath } from "url";
@@ -189,6 +190,19 @@ export class PostgresDatabaseAdapter
189190
try {
190191
await client.query("BEGIN");
191192

193+
// Set application settings for embedding dimension
194+
const embeddingConfig = getEmbeddingConfig();
195+
if (embeddingConfig.provider === EmbeddingProvider.OpenAI) {
196+
await client.query("SET app.use_openai_embedding = 'true'");
197+
await client.query("SET app.use_ollama_embedding = 'false'");
198+
} else if (embeddingConfig.provider === EmbeddingProvider.Ollama) {
199+
await client.query("SET app.use_openai_embedding = 'false'");
200+
await client.query("SET app.use_ollama_embedding = 'true'");
201+
} else {
202+
await client.query("SET app.use_openai_embedding = 'false'");
203+
await client.query("SET app.use_ollama_embedding = 'false'");
204+
}
205+
192206
// Check if schema already exists (check for a core table)
193207
const { rows } = await client.query(`
194208
SELECT EXISTS (

packages/core/src/embedding.ts

+32-8
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,36 @@ interface EmbeddingOptions {
1414
provider?: string;
1515
}
1616

17-
// Add the embedding configuration
18-
export const getEmbeddingConfig = () => ({
17+
export const EmbeddingProvider = {
18+
OpenAI: "OpenAI",
19+
Ollama: "Ollama",
20+
GaiaNet: "GaiaNet",
21+
BGE: "BGE",
22+
} as const;
23+
24+
export type EmbeddingProvider =
25+
(typeof EmbeddingProvider)[keyof typeof EmbeddingProvider];
26+
27+
export namespace EmbeddingProvider {
28+
export type OpenAI = typeof EmbeddingProvider.OpenAI;
29+
export type Ollama = typeof EmbeddingProvider.Ollama;
30+
export type GaiaNet = typeof EmbeddingProvider.GaiaNet;
31+
export type BGE = typeof EmbeddingProvider.BGE;
32+
}
33+
34+
export type EmbeddingConfig = {
35+
readonly dimensions: number;
36+
readonly model: string;
37+
readonly provider: EmbeddingProvider;
38+
};
39+
40+
export const getEmbeddingConfig = (): EmbeddingConfig => ({
1941
dimensions:
2042
settings.USE_OPENAI_EMBEDDING?.toLowerCase() === "true"
2143
? 1536 // OpenAI
2244
: settings.USE_OLLAMA_EMBEDDING?.toLowerCase() === "true"
2345
? 1024 // Ollama mxbai-embed-large
24-
:settings.USE_GAIANET_EMBEDDING?.toLowerCase() === "true"
46+
: settings.USE_GAIANET_EMBEDDING?.toLowerCase() === "true"
2547
? 768 // GaiaNet
2648
: 384, // BGE
2749
model:
@@ -171,7 +193,7 @@ export async function embed(runtime: IAgentRuntime, input: string) {
171193
const isNode = typeof process !== "undefined" && process.versions?.node;
172194

173195
// Determine which embedding path to use
174-
if (config.provider === "OpenAI") {
196+
if (config.provider === EmbeddingProvider.OpenAI) {
175197
return await getRemoteEmbedding(input, {
176198
model: config.model,
177199
endpoint: "https://api.openai.com/v1",
@@ -180,7 +202,7 @@ export async function embed(runtime: IAgentRuntime, input: string) {
180202
});
181203
}
182204

183-
if (config.provider === "Ollama") {
205+
if (config.provider === EmbeddingProvider.Ollama) {
184206
return await getRemoteEmbedding(input, {
185207
model: config.model,
186208
endpoint:
@@ -191,7 +213,7 @@ export async function embed(runtime: IAgentRuntime, input: string) {
191213
});
192214
}
193215

194-
if (config.provider=="GaiaNet") {
216+
if (config.provider == EmbeddingProvider.GaiaNet) {
195217
return await getRemoteEmbedding(input, {
196218
model: config.model,
197219
endpoint:
@@ -252,9 +274,11 @@ export async function embed(runtime: IAgentRuntime, input: string) {
252274
return await import("fastembed");
253275
} catch {
254276
elizaLogger.error("Failed to load fastembed.");
255-
throw new Error("fastembed import failed, falling back to remote embedding");
277+
throw new Error(
278+
"fastembed import failed, falling back to remote embedding"
279+
);
256280
}
257-
})()
281+
})(),
258282
]);
259283

260284
const [fs, { fileURLToPath }, fastEmbed] = moduleImports;

0 commit comments

Comments
 (0)