feat: maxlink and search sql

This commit is contained in:
archer
2023-06-05 14:02:53 +08:00
parent 48fbc74168
commit 2f1506bf07
2 changed files with 12 additions and 11 deletions

View File

@@ -91,16 +91,17 @@ export async function appKbSearch({
}); });
// search kb // search kb
const { rows: searchRes } = await PgClient.select<QuoteItemType>('modelData', { const res: any = await PgClient.query(
fields: ['id', 'q', 'a', 'source'], `BEGIN;
where: [ SET LOCAL ivfflat.probes = ${process.env.PG_IVFFLAT_PROBE || 100};
`kb_id IN (${model.chat.relatedKbs.map((item) => `'${item}'`).join(',')})`, select id,q,a,source from modelData where kb_id IN (${model.chat.relatedKbs
'AND', .map((item) => `'${item}'`)
`vector <#> '[${promptVector[0]}]' < ${similarity}` .join(',')}) AND vector <#> '[${promptVector[0]}]' < ${similarity} order by vector <#> '[${
], promptVector[0]
order: [{ field: 'vector', mode: `<#> '[${promptVector[0]}]'` }], }]' limit 8;
limit: 8 COMMIT;`
}); );
const searchRes: QuoteItemType[] = res?.[2]?.rows || [];
// filter same search result // filter same search result
const idSet = new Set<string>(); const idSet = new Set<string>();

View File

@@ -13,7 +13,7 @@ export const connectPg = async () => {
user: process.env.PG_USER, user: process.env.PG_USER,
password: process.env.PG_PASSWORD, password: process.env.PG_PASSWORD,
database: process.env.PG_DB_NAME, database: process.env.PG_DB_NAME,
max: maxLink, max: Math.floor(maxLink * 0.5),
idleTimeoutMillis: 60000, idleTimeoutMillis: 60000,
connectionTimeoutMillis: 20000 connectionTimeoutMillis: 20000
}); });