feat(llm): add LLM integration instructions and handler
* Serve LLM instructions at `/llm` * Include markdown content for memory instructions * Update README with LLM integration details * Add tests for LLM instructions handler * Modify database migrations to use GUIDs for thoughts and projects
This commit is contained in:
@@ -1,10 +1,12 @@
|
||||
create table if not exists thoughts (
|
||||
id uuid default gen_random_uuid() primary key,
|
||||
content text not null,
|
||||
embedding vector(1536),
|
||||
metadata jsonb default '{}'::jsonb,
|
||||
id bigserial primary key,
|
||||
guid uuid not null default gen_random_uuid(),
|
||||
content text not null,
|
||||
embedding vector(1536),
|
||||
metadata jsonb default '{}'::jsonb,
|
||||
created_at timestamptz default now(),
|
||||
updated_at timestamptz default now()
|
||||
updated_at timestamptz default now(),
|
||||
constraint thoughts_guid_unique unique (guid)
|
||||
);
|
||||
|
||||
create index if not exists thoughts_embedding_hnsw_idx
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
create table if not exists projects (
|
||||
id uuid default gen_random_uuid() primary key,
|
||||
name text not null unique,
|
||||
description text,
|
||||
created_at timestamptz default now(),
|
||||
last_active_at timestamptz default now()
|
||||
id bigserial primary key,
|
||||
guid uuid not null default gen_random_uuid(),
|
||||
name text not null unique,
|
||||
description text,
|
||||
created_at timestamptz default now(),
|
||||
last_active_at timestamptz default now(),
|
||||
constraint projects_guid_unique unique (guid)
|
||||
);
|
||||
|
||||
alter table thoughts add column if not exists project_id uuid references projects(id);
|
||||
alter table thoughts add column if not exists project_id uuid references projects(guid);
|
||||
alter table thoughts add column if not exists archived_at timestamptz;
|
||||
|
||||
create index if not exists thoughts_project_id_idx on thoughts (project_id);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
create table if not exists thought_links (
|
||||
from_id uuid references thoughts(id) on delete cascade,
|
||||
to_id uuid references thoughts(id) on delete cascade,
|
||||
relation text not null,
|
||||
from_id bigint not null references thoughts(id) on delete cascade,
|
||||
to_id bigint not null references thoughts(id) on delete cascade,
|
||||
relation text not null,
|
||||
created_at timestamptz default now(),
|
||||
primary key (from_id, to_id, relation)
|
||||
);
|
||||
|
||||
@@ -16,7 +16,7 @@ as $$
|
||||
begin
|
||||
return query
|
||||
select
|
||||
t.id,
|
||||
t.guid,
|
||||
t.content,
|
||||
t.metadata,
|
||||
1 - (t.embedding <=> query_embedding) as similarity,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
create table if not exists embeddings (
|
||||
id bigserial primary key,
|
||||
guid uuid not null default gen_random_uuid(),
|
||||
thought_id uuid not null references thoughts(id) on delete cascade,
|
||||
thought_id uuid not null references thoughts(guid) on delete cascade,
|
||||
model text not null,
|
||||
dim int not null,
|
||||
embedding vector not null,
|
||||
|
||||
@@ -17,13 +17,13 @@ as $$
|
||||
begin
|
||||
return query
|
||||
select
|
||||
t.id,
|
||||
t.guid,
|
||||
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
|
||||
join embeddings e on e.thought_id = t.guid
|
||||
where 1 - (e.embedding <=> query_embedding) > match_threshold
|
||||
and t.archived_at is null
|
||||
and (embedding_model = '' or e.model = embedding_model)
|
||||
|
||||
Reference in New Issue
Block a user