@@ -14,30 +14,31 @@ class Schema
1414
1515 def self . for (
1616 target_klass ,
17- vector : DiscourseAi ::Embeddings ::VectorRepresentations ::Base . current_representation
17+ vector_def : DiscourseAi ::Embeddings ::VectorRepresentations ::Base . current_representation
1818 )
1919 case target_klass &.name
2020 when "Topic"
21- new ( TOPICS_TABLE , "topic_id" , vector )
21+ new ( TOPICS_TABLE , "topic_id" , vector_def )
2222 when "Post"
23- new ( POSTS_TABLE , "post_id" , vector )
23+ new ( POSTS_TABLE , "post_id" , vector_def )
2424 when "RagDocumentFragment"
25- new ( RAG_DOCS_TABLE , "rag_document_fragment_id" , vector )
25+ new ( RAG_DOCS_TABLE , "rag_document_fragment_id" , vector_def )
2626 else
2727 raise ArgumentError , "Invalid target type for embeddings"
2828 end
2929 end
3030
31- def initialize ( table , target_column , vector )
31+ def initialize ( table , target_column , vector_def )
3232 @table = table
3333 @target_column = target_column
34- @vector = vector
34+ @vector_def = vector_def
3535 end
3636
37- attr_reader :table , :target_column , :vector
37+ attr_reader :table , :target_column , :vector_def
3838
3939 def find_by_embedding ( embedding )
40- DB . query ( <<~SQL , query_embedding : embedding , vid : vector . id , vsid : vector . strategy_id ) . first
40+ DB . query (
41+ <<~SQL ,
4142 SELECT *
4243 FROM #{ table }
4344 WHERE
@@ -46,10 +47,15 @@ def find_by_embedding(embedding)
4647 embeddings::halfvec(#{ dimensions } ) #{ pg_function } '[:query_embedding]'::halfvec(#{ dimensions } )
4748 LIMIT 1
4849 SQL
50+ query_embedding : embedding ,
51+ vid : vector_def . id ,
52+ vsid : vector_def . strategy_id ,
53+ ) . first
4954 end
5055
5156 def find_by_target ( target )
52- DB . query ( <<~SQL , target_id : target . id , vid : vector . id , vsid : vector . strategy_id ) . first
57+ DB . query (
58+ <<~SQL ,
5359 SELECT *
5460 FROM #{ table }
5561 WHERE
@@ -58,6 +64,10 @@ def find_by_target(target)
5864 #{ target_column } = :target_id
5965 LIMIT 1
6066 SQL
67+ target_id : target . id ,
68+ vid : vector_def . id ,
69+ vsid : vector_def . strategy_id ,
70+ ) . first
6171 end
6272
6373 def asymmetric_similarity_search ( embedding , limit :, offset :)
@@ -87,8 +97,8 @@ def asymmetric_similarity_search(embedding, limit:, offset:)
8797
8898 builder . where (
8999 "model_id = :model_id AND strategy_id = :strategy_id" ,
90- model_id : vector . id ,
91- strategy_id : vector . strategy_id ,
100+ model_id : vector_def . id ,
101+ strategy_id : vector_def . strategy_id ,
92102 )
93103
94104 yield ( builder ) if block_given?
@@ -156,7 +166,7 @@ def symmetric_similarity_search(record)
156166
157167 yield ( builder ) if block_given?
158168
159- builder . query ( vid : vector . id , vsid : vector . strategy_id , target_id : record . id )
169+ builder . query ( vid : vector_def . id , vsid : vector_def . strategy_id , target_id : record . id )
160170 rescue PG ::Error => e
161171 Rails . logger . error ( "Error #{ e } querying embeddings for model #{ name } " )
162172 raise MissingEmbeddingError
@@ -176,10 +186,10 @@ def store(record, embedding, digest)
176186 updated_at = :now
177187 SQL
178188 target_id : record . id ,
179- model_id : vector . id ,
180- model_version : vector . version ,
181- strategy_id : vector . strategy_id ,
182- strategy_version : vector . strategy_version ,
189+ model_id : vector_def . id ,
190+ model_version : vector_def . version ,
191+ strategy_id : vector_def . strategy_id ,
192+ strategy_version : vector_def . strategy_version ,
183193 digest : digest ,
184194 embeddings : embedding ,
185195 now : Time . zone . now ,
@@ -188,7 +198,7 @@ def store(record, embedding, digest)
188198
189199 private
190200
191- delegate :dimensions , :pg_function , to : :vector
201+ delegate :dimensions , :pg_function , to : :vector_def
192202 end
193203 end
194204end
0 commit comments