feat(embeddings): add embedding model support and related changes
* Introduced EmbeddingModel method in Client and Provider interfaces * Updated InsertThought and SearchThoughts methods to handle embedding models * Created embeddings table and updated match_thoughts function for model filtering * Removed embedding column from thoughts table * Adjusted permissions for new embeddings table
This commit is contained in:
34
migrations/008_update_match_thoughts.sql
Normal file
34
migrations/008_update_match_thoughts.sql
Normal file
@@ -0,0 +1,34 @@
|
||||
create or replace function match_thoughts(
|
||||
query_embedding vector,
|
||||
match_threshold float default 0.7,
|
||||
match_count int default 10,
|
||||
filter jsonb default '{}'::jsonb,
|
||||
embedding_model text default ''
|
||||
)
|
||||
returns table (
|
||||
id uuid,
|
||||
content text,
|
||||
metadata jsonb,
|
||||
similarity float,
|
||||
created_at timestamptz
|
||||
)
|
||||
language plpgsql
|
||||
as $$
|
||||
begin
|
||||
return query
|
||||
select
|
||||
t.id,
|
||||
t.content,
|
||||
t.metadata,
|
||||
1 - (e.embedding <=> query_embedding) as similarity,
|
||||
t.created_at
|
||||
from thoughts t
|
||||
join embeddings e on e.thought_id = t.id
|
||||
where 1 - (e.embedding <=> query_embedding) > match_threshold
|
||||
and t.archived_at is null
|
||||
and (embedding_model = '' or e.model = embedding_model)
|
||||
and (filter = '{}'::jsonb or t.metadata @> filter)
|
||||
order by e.embedding <=> query_embedding
|
||||
limit match_count;
|
||||
end;
|
||||
$$;
|
||||
Reference in New Issue
Block a user