Skip to content
Closed
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 20 additions & 14 deletions migration/0.1.0/002_add_hybrid_search_tsvector.sql
Original file line number Diff line number Diff line change
Expand Up @@ -46,12 +46,12 @@ CREATE OR REPLACE FUNCTION hybrid_search_archon_crawled_pages_multi(
)
RETURNS TABLE (
id BIGINT,
url VARCHAR,
url TEXT,
chunk_number INTEGER,
content TEXT,
metadata JSONB,
source_id TEXT,
similarity FLOAT,
similarity DOUBLE PRECISION,
match_type TEXT
)
LANGUAGE plpgsql
Expand Down Expand Up @@ -143,28 +143,31 @@ BEGIN
END;
$$;

-- Legacy compatibility function (defaults to 1536D)
-- Auto-detecting wrapper function (supports all dimensions)
CREATE OR REPLACE FUNCTION hybrid_search_archon_crawled_pages(
query_embedding vector(1536),
query_embedding VECTOR,
query_text TEXT,
match_count INT DEFAULT 10,
filter JSONB DEFAULT '{}'::jsonb,
source_filter TEXT DEFAULT NULL
)
RETURNS TABLE (
id BIGINT,
url VARCHAR,
url TEXT,
chunk_number INTEGER,
content TEXT,
metadata JSONB,
source_id TEXT,
similarity FLOAT,
similarity DOUBLE PRECISION,
match_type TEXT
)
LANGUAGE plpgsql
AS $$
DECLARE
detected_dimension INT;
BEGIN
RETURN QUERY SELECT * FROM hybrid_search_archon_crawled_pages_multi(query_embedding, 1536, query_text, match_count, filter, source_filter);
detected_dimension := vector_dims(query_embedding);
RETURN QUERY SELECT * FROM hybrid_search_archon_crawled_pages_multi(query_embedding, detected_dimension, query_text, match_count, filter, source_filter);
END;
$$;

Expand All @@ -179,13 +182,13 @@ CREATE OR REPLACE FUNCTION hybrid_search_archon_code_examples_multi(
)
RETURNS TABLE (
id BIGINT,
url VARCHAR,
url TEXT,
chunk_number INTEGER,
content TEXT,
summary TEXT,
metadata JSONB,
source_id TEXT,
similarity FLOAT,
similarity DOUBLE PRECISION,
match_type TEXT
)
LANGUAGE plpgsql
Expand Down Expand Up @@ -280,29 +283,32 @@ BEGIN
END;
$$;

-- Legacy compatibility function (defaults to 1536D)
-- Auto-detecting wrapper function (supports all dimensions)
CREATE OR REPLACE FUNCTION hybrid_search_archon_code_examples(
query_embedding vector(1536),
query_embedding VECTOR,
query_text TEXT,
match_count INT DEFAULT 10,
filter JSONB DEFAULT '{}'::jsonb,
source_filter TEXT DEFAULT NULL
)
RETURNS TABLE (
id BIGINT,
url VARCHAR,
url TEXT,
chunk_number INTEGER,
content TEXT,
summary TEXT,
metadata JSONB,
source_id TEXT,
similarity FLOAT,
similarity DOUBLE PRECISION,
match_type TEXT
)
LANGUAGE plpgsql
AS $$
DECLARE
detected_dimension INT;
BEGIN
RETURN QUERY SELECT * FROM hybrid_search_archon_code_examples_multi(query_embedding, 1536, query_text, match_count, filter, source_filter);
detected_dimension := vector_dims(query_embedding);
RETURN QUERY SELECT * FROM hybrid_search_archon_code_examples_multi(query_embedding, detected_dimension, query_text, match_count, filter, source_filter);
END;
$$;

Expand Down
26 changes: 26 additions & 0 deletions migration/0.1.0/011_add_page_metadata_table.sql
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,32 @@ COMMENT ON COLUMN archon_page_metadata.chunk_count IS 'Number of chunks created
COMMENT ON COLUMN archon_page_metadata.metadata IS 'Flexible JSON metadata (page_type, knowledge_type, tags, etc)';
COMMENT ON COLUMN archon_crawled_pages.page_id IS 'Foreign key linking chunk to parent page';

-- Enable Row Level Security
ALTER TABLE archon_page_metadata ENABLE ROW LEVEL SECURITY;

-- Create RLS policies for archon_page_metadata
-- Service role gets full access (for backend operations)
CREATE POLICY "Allow service role full access to archon_page_metadata"
ON archon_page_metadata
FOR ALL
TO service_role
USING (true)
WITH CHECK (true);

-- Authenticated users get read-only access
CREATE POLICY "Allow authenticated users to read archon_page_metadata"
ON archon_page_metadata
FOR SELECT
TO authenticated
USING (true);

Comment thread
coderabbitai[bot] marked this conversation as resolved.
-- Grant table-level permissions (CRITICAL for service_role access)
-- Follow least privilege principle: only service_role gets full access
GRANT ALL ON TABLE archon_page_metadata TO postgres;
GRANT SELECT ON TABLE archon_page_metadata TO anon;
GRANT SELECT ON TABLE archon_page_metadata TO authenticated;
GRANT ALL ON TABLE archon_page_metadata TO service_role;

Comment thread
coderabbitai[bot] marked this conversation as resolved.
-- Record migration application for tracking
INSERT INTO archon_migrations (version, migration_name)
VALUES ('0.1.0', '011_add_page_metadata_table')
Expand Down
60 changes: 36 additions & 24 deletions migration/complete_setup.sql
Original file line number Diff line number Diff line change
Expand Up @@ -399,12 +399,12 @@ CREATE OR REPLACE FUNCTION match_archon_crawled_pages_multi (
source_filter TEXT DEFAULT NULL
) RETURNS TABLE (
id BIGINT,
url VARCHAR,
url TEXT,
chunk_number INTEGER,
content TEXT,
metadata JSONB,
source_id TEXT,
similarity FLOAT
similarity DOUBLE PRECISION
)
LANGUAGE plpgsql
AS $$
Expand Down Expand Up @@ -442,23 +442,26 @@ $$;

-- Legacy compatibility function (defaults to 1536D)
CREATE OR REPLACE FUNCTION match_archon_crawled_pages (
query_embedding VECTOR(1536),
query_embedding VECTOR,
match_count INT DEFAULT 10,
filter JSONB DEFAULT '{}'::jsonb,
source_filter TEXT DEFAULT NULL
) RETURNS TABLE (
id BIGINT,
url VARCHAR,
url TEXT,
chunk_number INTEGER,
content TEXT,
metadata JSONB,
source_id TEXT,
similarity FLOAT
similarity DOUBLE PRECISION
)
LANGUAGE plpgsql
AS $$
DECLARE
detected_dimension INT;
BEGIN
RETURN QUERY SELECT * FROM match_archon_crawled_pages_multi(query_embedding, 1536, match_count, filter, source_filter);
detected_dimension := vector_dims(query_embedding);
RETURN QUERY SELECT * FROM match_archon_crawled_pages_multi(query_embedding, detected_dimension, match_count, filter, source_filter);
END;
$$;

Expand All @@ -471,13 +474,13 @@ CREATE OR REPLACE FUNCTION match_archon_code_examples_multi (
source_filter TEXT DEFAULT NULL
) RETURNS TABLE (
id BIGINT,
url VARCHAR,
url TEXT,
chunk_number INTEGER,
content TEXT,
summary TEXT,
metadata JSONB,
source_id TEXT,
similarity FLOAT
similarity DOUBLE PRECISION
)
LANGUAGE plpgsql
AS $$
Expand Down Expand Up @@ -515,24 +518,27 @@ $$;

-- Legacy compatibility function (defaults to 1536D)
CREATE OR REPLACE FUNCTION match_archon_code_examples (
query_embedding VECTOR(1536),
query_embedding VECTOR,
match_count INT DEFAULT 10,
filter JSONB DEFAULT '{}'::jsonb,
source_filter TEXT DEFAULT NULL
) RETURNS TABLE (
id BIGINT,
url VARCHAR,
url TEXT,
chunk_number INTEGER,
content TEXT,
summary TEXT,
metadata JSONB,
source_id TEXT,
similarity FLOAT
similarity DOUBLE PRECISION
)
LANGUAGE plpgsql
AS $$
DECLARE
detected_dimension INT;
BEGIN
RETURN QUERY SELECT * FROM match_archon_code_examples_multi(query_embedding, 1536, match_count, filter, source_filter);
detected_dimension := vector_dims(query_embedding);
RETURN QUERY SELECT * FROM match_archon_code_examples_multi(query_embedding, detected_dimension, match_count, filter, source_filter);
END;
$$;

Expand All @@ -551,12 +557,12 @@ CREATE OR REPLACE FUNCTION hybrid_search_archon_crawled_pages_multi(
)
RETURNS TABLE (
id BIGINT,
url VARCHAR,
url TEXT,
chunk_number INTEGER,
content TEXT,
metadata JSONB,
source_id TEXT,
similarity FLOAT,
similarity DOUBLE PRECISION,
match_type TEXT
)
LANGUAGE plpgsql
Expand Down Expand Up @@ -650,26 +656,29 @@ $$;

-- Legacy compatibility function (defaults to 1536D)
CREATE OR REPLACE FUNCTION hybrid_search_archon_crawled_pages(
query_embedding vector(1536),
query_embedding VECTOR,
query_text TEXT,
match_count INT DEFAULT 10,
filter JSONB DEFAULT '{}'::jsonb,
source_filter TEXT DEFAULT NULL
)
RETURNS TABLE (
id BIGINT,
url VARCHAR,
url TEXT,
chunk_number INTEGER,
content TEXT,
metadata JSONB,
source_id TEXT,
similarity FLOAT,
similarity DOUBLE PRECISION,
match_type TEXT
)
LANGUAGE plpgsql
AS $$
DECLARE
detected_dimension INT;
BEGIN
RETURN QUERY SELECT * FROM hybrid_search_archon_crawled_pages_multi(query_embedding, 1536, query_text, match_count, filter, source_filter);
detected_dimension := vector_dims(query_embedding);
RETURN QUERY SELECT * FROM hybrid_search_archon_crawled_pages_multi(query_embedding, detected_dimension, query_text, match_count, filter, source_filter);
END;
$$;

Expand All @@ -684,13 +693,13 @@ CREATE OR REPLACE FUNCTION hybrid_search_archon_code_examples_multi(
)
RETURNS TABLE (
id BIGINT,
url VARCHAR,
url TEXT,
chunk_number INTEGER,
content TEXT,
summary TEXT,
metadata JSONB,
source_id TEXT,
similarity FLOAT,
similarity DOUBLE PRECISION,
match_type TEXT
)
LANGUAGE plpgsql
Expand Down Expand Up @@ -787,27 +796,30 @@ $$;

-- Legacy compatibility function (defaults to 1536D)
CREATE OR REPLACE FUNCTION hybrid_search_archon_code_examples(
query_embedding vector(1536),
query_embedding VECTOR,
query_text TEXT,
match_count INT DEFAULT 10,
filter JSONB DEFAULT '{}'::jsonb,
source_filter TEXT DEFAULT NULL
)
RETURNS TABLE (
id BIGINT,
url VARCHAR,
url TEXT,
chunk_number INTEGER,
content TEXT,
summary TEXT,
metadata JSONB,
source_id TEXT,
similarity FLOAT,
similarity DOUBLE PRECISION,
match_type TEXT
)
LANGUAGE plpgsql
AS $$
DECLARE
detected_dimension INT;
BEGIN
RETURN QUERY SELECT * FROM hybrid_search_archon_code_examples_multi(query_embedding, 1536, query_text, match_count, filter, source_filter);
detected_dimension := vector_dims(query_embedding);
RETURN QUERY SELECT * FROM hybrid_search_archon_code_examples_multi(query_embedding, detected_dimension, query_text, match_count, filter, source_filter);
END;
$$;

Expand Down