@@ -131,7 +131,7 @@ def create_index!(table_name, memory, lists, probes)
131131 ON
132132 #{ table_name }
133133 USING
134- ivfflat (embeddings #{ pg_index_type } )
134+ ivfflat (( embeddings::halfvec( #{ dimensions } )) #{ pg_index_type } )
135135 WITH
136136 (lists = #{ lists } )
137137 WHERE
@@ -202,7 +202,7 @@ def topic_id_from_representation(raw_vector)
202202 model_id = #{ id } AND
203203 strategy_id = #{ @strategy . id }
204204 ORDER BY
205- embeddings #{ pg_function } '[:query_embedding]'
205+ embeddings::halfvec( #{ dimensions } ) #{ pg_function } '[:query_embedding]'::halfvec( #{ dimensions } )
206206 LIMIT 1
207207 SQL
208208 end
@@ -217,7 +217,7 @@ def post_id_from_representation(raw_vector)
217217 model_id = #{ id } AND
218218 strategy_id = #{ @strategy . id }
219219 ORDER BY
220- embeddings #{ pg_function } '[:query_embedding]'
220+ embeddings::halfvec( #{ dimensions } ) #{ pg_function } '[:query_embedding]'::halfvec( #{ dimensions } )
221221 LIMIT 1
222222 SQL
223223 end
@@ -227,13 +227,13 @@ def asymmetric_topics_similarity_search(raw_vector, limit:, offset:, return_dist
227227 #{ probes_sql ( topic_table_name ) }
228228 SELECT
229229 topic_id,
230- embeddings #{ pg_function } '[:query_embedding]' AS distance
230+ embeddings::halfvec( #{ dimensions } ) #{ pg_function } '[:query_embedding]'::halfvec( #{ dimensions } ) AS distance
231231 FROM
232232 #{ topic_table_name }
233233 WHERE
234234 model_id = #{ id } AND strategy_id = #{ @strategy . id }
235235 ORDER BY
236- embeddings #{ pg_function } '[:query_embedding]'
236+ embeddings::halfvec( #{ dimensions } ) #{ pg_function } '[:query_embedding]'::halfvec( #{ dimensions } )
237237 LIMIT :limit
238238 OFFSET :offset
239239 SQL
@@ -253,7 +253,7 @@ def asymmetric_posts_similarity_search(raw_vector, limit:, offset:, return_dista
253253 #{ probes_sql ( post_table_name ) }
254254 SELECT
255255 post_id,
256- embeddings #{ pg_function } '[:query_embedding]' AS distance
256+ embeddings::halfvec( #{ dimensions } ) #{ pg_function } '[:query_embedding]'::halfvec( #{ dimensions } ) AS distance
257257 FROM
258258 #{ post_table_name }
259259 INNER JOIN
@@ -263,7 +263,7 @@ def asymmetric_posts_similarity_search(raw_vector, limit:, offset:, return_dista
263263 WHERE
264264 model_id = #{ id } AND strategy_id = #{ @strategy . id }
265265 ORDER BY
266- embeddings #{ pg_function } '[:query_embedding]'
266+ embeddings::halfvec( #{ dimensions } ) #{ pg_function } '[:query_embedding]'::halfvec( #{ dimensions } )
267267 LIMIT :limit
268268 OFFSET :offset
269269 SQL
@@ -291,7 +291,7 @@ def asymmetric_rag_fragment_similarity_search(
291291 #{ probes_sql ( post_table_name ) }
292292 SELECT
293293 rag_document_fragment_id,
294- embeddings #{ pg_function } '[:query_embedding]' AS distance
294+ embeddings::halfvec( #{ dimensions } ) #{ pg_function } '[:query_embedding]'::halfvec( #{ dimensions } ) AS distance
295295 FROM
296296 #{ rag_fragments_table_name }
297297 INNER JOIN
@@ -301,7 +301,7 @@ def asymmetric_rag_fragment_similarity_search(
301301 strategy_id = #{ @strategy . id } AND
302302 rdf.ai_persona_id = :persona_id
303303 ORDER BY
304- embeddings #{ pg_function } '[:query_embedding]'
304+ embeddings::halfvec( #{ dimensions } ) #{ pg_function } '[:query_embedding]'::halfvec( #{ dimensions } )
305305 LIMIT :limit
306306 OFFSET :offset
307307 SQL
@@ -332,7 +332,7 @@ def symmetric_topics_similarity_search(topic)
332332 model_id = #{ id } AND
333333 strategy_id = #{ @strategy . id }
334334 ORDER BY
335- embeddings #{ pg_function } (
335+ embeddings::halfvec( #{ dimensions } ) #{ pg_function } (
336336 SELECT
337337 embeddings
338338 FROM
@@ -342,7 +342,7 @@ def symmetric_topics_similarity_search(topic)
342342 strategy_id = #{ @strategy . id } AND
343343 topic_id = :topic_id
344344 LIMIT 1
345- )
345+ )::halfvec( #{ dimensions } )
346346 LIMIT 100
347347 SQL
348348 rescue PG ::Error => e
0 commit comments