* Add tools for creating, retrieving, updating, and deleting thoughts. * Implement project management tools for creating and listing projects. * Introduce linking functionality between thoughts. * Add search and recall capabilities for thoughts based on semantic queries. * Implement statistics and summarization tools for thought analysis. * Create database migrations for thoughts, projects, and links. * Add helper functions for UUID parsing and project resolution.
32 lines
695 B
PL/PgSQL
32 lines
695 B
PL/PgSQL
create or replace function match_thoughts(
|
|
query_embedding vector(1536),
|
|
match_threshold float default 0.7,
|
|
match_count int default 10,
|
|
filter jsonb default '{}'::jsonb
|
|
)
|
|
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 - (t.embedding <=> query_embedding) as similarity,
|
|
t.created_at
|
|
from thoughts t
|
|
where 1 - (t.embedding <=> query_embedding) > match_threshold
|
|
and t.archived_at is null
|
|
and (filter = '{}'::jsonb or t.metadata @> filter)
|
|
order by t.embedding <=> query_embedding
|
|
limit match_count;
|
|
end;
|
|
$$;
|