minor constants refactoring
This commit is contained in:
@@ -1,27 +1,17 @@
|
||||
const {QdrantClient} = require('@qdrant/js-client-rest');
|
||||
const {getEnv} = require('@nexusai/shared');
|
||||
const {QDRANT, COLLECTIONS, getEnv} = require('@nexusai/shared');
|
||||
|
||||
let client;
|
||||
|
||||
// ********** QDrant Client **********
|
||||
function getClient(){
|
||||
if(!client){
|
||||
const url = getEnv('QDrant_URL', 'http://localhost:6333');
|
||||
client = new QdrantClient({url});
|
||||
client = new QdrantClient({url: getEnv('QDRANT_URL', QDRANT.DEFAULT_URL)});
|
||||
}
|
||||
return client;
|
||||
}
|
||||
|
||||
// ********** Collections **********
|
||||
const COLLECTIONS = {
|
||||
EPISODES: 'episodes',
|
||||
ENTITIES: 'entities',
|
||||
SUMMARIES: 'summaries'
|
||||
};
|
||||
|
||||
// Vectoir size much match the embedding model output dimension
|
||||
// nomic-embed-text outputs 768 dimensions
|
||||
const VECTOR_SIZE = 768;
|
||||
|
||||
async function initCollections() {
|
||||
const client = getClient();
|
||||
@@ -29,9 +19,9 @@ async function initCollections() {
|
||||
const exists = await collectionExists(name);
|
||||
if (!exists) {
|
||||
await client.createCollection(name, {
|
||||
vectors: {
|
||||
size: VECTOR_SIZE,
|
||||
distance: 'Cosine' // Cosine similarity — best for text embeddings
|
||||
vectors: {
|
||||
size: QDRANT.VECTOR_SIZE,
|
||||
distance: QDRANT.DISTANCE_METRIC
|
||||
}
|
||||
});
|
||||
console.log(`Created Qdrant collection: ${name}`);
|
||||
@@ -77,7 +67,7 @@ async function upsertSummary(id, vector, payload={}) {
|
||||
}
|
||||
|
||||
//********** Search Vectors ********** */
|
||||
async function searchCollection(collection, vector, limit = 10, filter = null){
|
||||
async function searchCollection(collection, vector, limit = QDRANT.DEFAULT_LIMIT, filter = null){
|
||||
const client = getClient();
|
||||
const params = {vector,limit, with_payload: true};
|
||||
|
||||
@@ -85,13 +75,13 @@ async function searchCollection(collection, vector, limit = 10, filter = null){
|
||||
|
||||
return client.search(collection, params);
|
||||
}
|
||||
async function searchEpisodes(vector, limit = 10, filter = null) {
|
||||
async function searchEpisodes(vector, limit = QDRANT.DEFAULT_LIMIT, filter = null) {
|
||||
return searchCollection(COLLECTIONS.EPISODES, vector, limit, filter);
|
||||
}
|
||||
async function searchEntities(vector, limit = 10, filter = null) {
|
||||
async function searchEntities(vector, limit = QDRANT.DEFAULT_LIMIT, filter = null) {
|
||||
return searchCollection(COLLECTIONS.ENTITIES, vector, limit, filter);
|
||||
}
|
||||
async function searchSummaries(vector, limit = 10, filter = null) {
|
||||
async function searchSummaries(vector, limit = QDRANT.DEFAULT_LIMIT, filter = null) {
|
||||
return searchCollection(COLLECTIONS.SUMMARIES, vector, limit, filter);
|
||||
}
|
||||
|
||||
@@ -106,7 +96,6 @@ async function deleteVector(collection, id) {
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
COLLECTIONS,
|
||||
initCollections,
|
||||
upsertEpisode,
|
||||
upsertEntity,
|
||||
|
||||
Reference in New Issue
Block a user