Diego
12/12/2024, 10:07 PMError: 400 - Field `embedding` does not have a vector query index.
at TypesenseInstantsearchAdapter._validateTypesenseResult (/Users/wayrapro/Documents/Projects/onde-vamos/node_modules/.pnpm/typesense-instantsearch-adapter@2.9.0-3_@babel+runtime@7.26.0/node_modules/typesense-instantsearch-adapter/src/TypesenseInstantsearchAdapter.js:90:13)
at map (/Users/wayrapro/Documents/Projects/onde-vamos/node_modules/.pnpm/typesense-instantsearch-adapter@2.9.0-3_@babel+runtime@7.26.0/node_modules/typesense-instantsearch-adapter/src/TypesenseInstantsearchAdapter.js:26:14)
at Array.map (<anonymous>)
at TypesenseInstantsearchAdapter._callee$ (/Users/wayrapro/Documents/Projects/onde-vamos/node_modules/.pnpm/typesense-instantsearch-adapter@2.9.0-3_@babel+runtime@7.26.0/node_modules/typesense-instantsearch-adapter/src/TypesenseInstantsearchAdapter.js:25:58)
at tryCatch (/Users/wayrapro/Documents/Projects/onde-vamos/node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/regeneratorRuntime.js:45:16)
at Generator.<anonymous> (/Users/wayrapro/Documents/Projects/onde-vamos/node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/regeneratorRuntime.js:133:17)
at Generator.next (/Users/wayrapro/Documents/Projects/onde-vamos/node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/regeneratorRuntime.js:74:21)
at asyncGeneratorStep (/Users/wayrapro/Documents/Projects/onde-vamos/node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/asyncToGenerator.js:3:17)
at _next (/Users/wayrapro/Documents/Projects/onde-vamos/node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/asyncToGenerator.js:17:9)
[17:05:52.697] ERROR (82066): Error in SSR for search page
err: {
"type": "Error",
"message": "400 - Field `embedding` does not have a vector query index.",
"stack":
Error: 400 - Field `embedding` does not have a vector query index.
at TypesenseInstantsearchAdapter._validateTypesenseResult (/Users/wayrapro/Documents/Projects/onde-vamos/node_modules/.pnpm/typesense-instantsearch-adapter@2.9.0-3_@babel+runtime@7.26.0/node_modules/typesense-instantsearch-adapter/src/TypesenseInstantsearchAdapter.js:90:13)
at map (/Users/wayrapro/Documents/Projects/onde-vamos/node_modules/.pnpm/typesense-instantsearch-adapter@2.9.0-3_@babel+runtime@7.26.0/node_modules/typesense-instantsearch-adapter/src/TypesenseInstantsearchAdapter.js:26:14)
at Array.map (<anonymous>)
at TypesenseInstantsearchAdapter._callee$ (/Users/wayrapro/Documents/Projects/onde-vamos/node_modules/.pnpm/typesense-instantsearch-adapter@2.9.0-3_@babel+runtime@7.26.0/node_modules/typesense-instantsearch-adapter/src/TypesenseInstantsearchAdapter.js:25:58)
at tryCatch (/Users/wayrapro/Documents/Projects/onde-vamos/node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/regeneratorRuntime.js:45:16)
at Generator.<anonymous> (/Users/wayrapro/Documents/Projects/onde-vamos/node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/regeneratorRuntime.js:133:17)
at Generator.next (/Users/wayrapro/Documents/Projects/onde-vamos/node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/regeneratorRuntime.js:74:21)
at asyncGeneratorStep (/Users/wayrapro/Documents/Projects/onde-vamos/node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/asyncToGenerator.js:3:17)
at _next (/Users/wayrapro/Documents/Projects/onde-vamos/node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/asyncToGenerator.js:17:9)
}
Jason Bosco
12/12/2024, 10:08 PMembed.from
changeJason Bosco
12/12/2024, 10:09 PMembedding
from your schema?Diego
12/12/2024, 10:10 PM{
"created_at": 1726001707,
"default_sorting_field": "",
"enable_nested_fields": true,
"fields": [
{
"facet": false,
"index": true,
"infix": false,
"locale": "",
"name": "title",
"optional": false,
"sort": false,
"stem": false,
"store": true,
"type": "string"
},
{
"facet": false,
"index": true,
"infix": false,
"locale": "",
"name": "description",
"optional": false,
"sort": false,
"stem": false,
"store": true,
"type": "string"
},
{
"facet": false,
"index": true,
"infix": false,
"locale": "",
"name": "m2_size",
"optional": false,
"sort": true,
"stem": false,
"store": true,
"type": "float"
},
{
"facet": false,
"index": true,
"infix": false,
"locale": "",
"name": "parking",
"optional": false,
"sort": true,
"stem": false,
"store": true,
"type": "bool"
},
{
"facet": true,
"index": true,
"infix": false,
"locale": "",
"name": "city",
"optional": false,
"sort": false,
"stem": false,
"store": true,
"type": "string"
},
{
"facet": true,
"index": true,
"infix": false,
"locale": "",
"name": "state",
"optional": false,
"sort": false,
"stem": false,
"store": true,
"type": "string"
},
{
"facet": false,
"index": true,
"infix": false,
"locale": "",
"name": "location",
"optional": false,
"sort": true,
"stem": false,
"store": true,
"type": "geopoint"
},
{
"facet": false,
"index": true,
"infix": false,
"locale": "",
"name": "images",
"optional": false,
"sort": false,
"stem": false,
"store": true,
"type": "string[]"
},
{
"facet": false,
"index": true,
"infix": false,
"locale": "",
"name": "updated_at_unix",
"optional": false,
"sort": true,
"stem": false,
"store": true,
"type": "int64"
},
{
"facet": true,
"index": true,
"infix": false,
"locale": "",
"name": "activities",
"optional": false,
"sort": false,
"stem": false,
"store": true,
"type": "string[]"
},
{
"facet": true,
"index": true,
"infix": false,
"locale": "",
"name": "main_activities",
"optional": false,
"sort": false,
"stem": false,
"store": true,
"type": "string[]"
},
{
"facet": false,
"index": true,
"infix": false,
"locale": "",
"name": "availability",
"optional": true,
"sort": false,
"stem": false,
"store": true,
"type": "object[]"
},
{
"facet": false,
"index": true,
"infix": false,
"locale": "",
"name": "bookings",
"optional": true,
"sort": false,
"stem": false,
"store": true,
"type": "object[]"
},
{
"facet": false,
"index": true,
"infix": false,
"locale": "",
"name": "availability.start_time_int",
"optional": true,
"sort": false,
"stem": false,
"store": true,
"type": "int64[]"
},
{
"facet": false,
"index": true,
"infix": false,
"locale": "",
"name": "availability.end_time_int",
"optional": true,
"sort": false,
"stem": false,
"store": true,
"type": "int64[]"
},
{
"facet": false,
"index": true,
"infix": false,
"locale": "",
"name": "availability.day_of_week",
"optional": true,
"sort": false,
"stem": false,
"store": true,
"type": "int64[]"
},
{
"facet": true,
"index": true,
"infix": false,
"locale": "",
"name": "amenities",
"optional": true,
"sort": false,
"stem": false,
"store": true,
"type": "string[]"
},
{
"facet": true,
"index": true,
"infix": false,
"locale": "",
"name": "category",
"optional": true,
"sort": false,
"stem": false,
"store": true,
"type": "string"
},
{
"facet": true,
"index": true,
"infix": false,
"locale": "",
"name": "price_per_hour",
"optional": true,
"sort": true,
"stem": false,
"store": true,
"type": "float"
},
{
"facet": true,
"index": true,
"infix": false,
"locale": "",
"name": "max_capacity",
"optional": false,
"sort": true,
"stem": false,
"store": true,
"type": "int32"
}
],
"name": "onde_sites",
"num_documents": 212,
"symbols_to_index": [],
"token_separators": []
}
Diego
12/12/2024, 10:10 PMDiego
12/12/2024, 10:11 PMDiego
12/12/2024, 10:11 PMDiego
12/12/2024, 10:12 PMDiego
12/12/2024, 10:12 PMDiego
12/12/2024, 10:12 PMDiego
12/12/2024, 10:12 PM{
"created_at": 1730142736,
"default_sorting_field": "",
"enable_nested_fields": true,
"fields": [
{
"facet": false,
"index": true,
"infix": false,
"locale": "",
"name": "title",
"optional": false,
"sort": false,
"stem": false,
"store": true,
"type": "string"
},
{
"facet": false,
"index": true,
"infix": false,
"locale": "",
"name": "description",
"optional": false,
"sort": false,
"stem": false,
"store": true,
"type": "string"
},
{
"facet": false,
"index": true,
"infix": false,
"locale": "",
"name": "m2_size",
"optional": false,
"sort": true,
"stem": false,
"store": true,
"type": "float"
},
{
"facet": false,
"index": true,
"infix": false,
"locale": "",
"name": "parking",
"optional": false,
"sort": true,
"stem": false,
"store": true,
"type": "bool"
},
{
"facet": true,
"index": true,
"infix": false,
"locale": "",
"name": "city",
"optional": false,
"sort": false,
"stem": false,
"store": true,
"type": "string"
},
{
"facet": true,
"index": true,
"infix": false,
"locale": "",
"name": "state",
"optional": false,
"sort": false,
"stem": false,
"store": true,
"type": "string"
},
{
"facet": false,
"index": true,
"infix": false,
"locale": "",
"name": "location",
"optional": false,
"sort": true,
"stem": false,
"store": true,
"type": "geopoint"
},
{
"facet": false,
"index": true,
"infix": false,
"locale": "",
"name": "images",
"optional": false,
"sort": false,
"stem": false,
"store": true,
"type": "string[]"
},
{
"facet": false,
"index": true,
"infix": false,
"locale": "",
"name": "updated_at_unix",
"optional": false,
"sort": true,
"stem": false,
"store": true,
"type": "int64"
},
{
"facet": true,
"index": true,
"infix": false,
"locale": "",
"name": "activities",
"optional": false,
"sort": false,
"stem": false,
"store": true,
"type": "string[]"
},
{
"facet": true,
"index": true,
"infix": false,
"locale": "",
"name": "main_activities",
"optional": false,
"sort": false,
"stem": false,
"store": true,
"type": "string[]"
},
{
"facet": false,
"index": true,
"infix": false,
"locale": "",
"name": "availability",
"optional": true,
"sort": false,
"stem": false,
"store": true,
"type": "object[]"
},
{
"facet": false,
"index": true,
"infix": false,
"locale": "",
"name": "bookings",
"optional": true,
"sort": false,
"stem": false,
"store": true,
"type": "object[]"
},
{
"embed": {
"from": [
"title",
"description"
],
"model_config": {
"api_key": "sk-jY**********************************************",
"model_name": "openai/text-embedding-3-small"
}
},
"facet": false,
"hnsw_params": {
"M": 16,
"ef_construction": 200
},
"index": true,
"infix": false,
"locale": "",
"name": "embedding",
"num_dim": 1536,
"optional": false,
"sort": false,
"stem": false,
"store": true,
"type": "float[]",
"vec_dist": "cosine"
},
{
"facet": false,
"index": true,
"infix": false,
"locale": "",
"name": "availability.start_time_int",
"optional": true,
"sort": false,
"stem": false,
"store": true,
"type": "int64[]"
},
{
"facet": false,
"index": true,
"infix": false,
"locale": "",
"name": "availability.end_time_int",
"optional": true,
"sort": false,
"stem": false,
"store": true,
"type": "int64[]"
},
{
"facet": false,
"index": true,
"infix": false,
"locale": "",
"name": "availability.day_of_week",
"optional": true,
"sort": false,
"stem": false,
"store": true,
"type": "int64[]"
},
{
"facet": true,
"index": true,
"infix": false,
"locale": "",
"name": "amenities",
"optional": true,
"sort": false,
"stem": false,
"store": true,
"type": "string[]"
},
{
"facet": true,
"index": true,
"infix": false,
"locale": "",
"name": "category",
"optional": true,
"sort": false,
"stem": false,
"store": true,
"type": "string"
},
{
"facet": true,
"index": true,
"infix": false,
"locale": "",
"name": "price_per_hour",
"optional": true,
"sort": true,
"stem": false,
"store": true,
"type": "float"
},
{
"facet": true,
"index": true,
"infix": false,
"locale": "",
"name": "max_capacity",
"optional": false,
"sort": true,
"stem": false,
"store": true,
"type": "int32"
}
],
"name": "onde_sites_dev",
"num_documents": 205,
"symbols_to_index": [],
"token_separators": []
}
Diego
12/12/2024, 10:12 PMDiego
12/12/2024, 10:12 PMJason Bosco
12/12/2024, 10:14 PMDiego
12/12/2024, 10:14 PMDiego
12/12/2024, 10:14 PMDiego
12/12/2024, 10:16 PMJason Bosco
12/12/2024, 10:16 PMJason Bosco
12/12/2024, 10:17 PMDiego
12/12/2024, 10:19 PMonde_vamos
also had it.
Currently the onde_vamos_dev
one has the embed field and the onde_vamos
does not. This is not something we desired to do and not sure how it would have been made.
We only used the import api and upsert in our indexing pipelineDiego
12/12/2024, 10:19 PMexport const bulkIndexToTypesense = async ({
transformedSpaces,
}: { transformedSpaces: SearchSpacesHit[] }) => {
const spaceDocuments: SearchSpacesHit[] = transformedSpaces;
const indexName =
Config.STAGE === "prod" ? IndexNames.onde_sites : IndexNames.onde_sites_dev;
<http://logger.info|logger.info>(
spaceDocuments.map((e) => e.id),
"Processing spaces",
);
const client = getAdminClient(Config.TYPESENSE_ADMIN_API_KEY);
try {
const res = await client
.collections<SearchSpacesHit & { embedding?: number[] }>(indexName)
.documents()
.import(spaceDocuments, { action: "upsert" });
return { res, error: null };
} catch (err) {
if (err instanceof ImportError) {
logger.error(err, "Error indexing to Typesense");
return {
error: err.importResults.filter((e) => !e.success),
res: null,
};
}
return { error: err, res: null };
}
};
Jason Bosco
12/12/2024, 10:19 PMthe second schema onde_vamos_dev is a clone of onde_vamosHow was this clone created?
Jason Bosco
12/12/2024, 10:20 PMDiego
12/12/2024, 10:20 PMJason Bosco
12/12/2024, 10:20 PMJason Bosco
12/12/2024, 10:21 PMDiego
12/12/2024, 10:25 PMJason Bosco
12/12/2024, 10:25 PMJason Bosco
12/12/2024, 10:26 PMDiego
12/12/2024, 11:05 PMJason Bosco
12/12/2024, 11:30 PMJason Bosco
12/12/2024, 11:31 PM