/
megabars
/
llm
Обзор
Документация
Войти
/
megabars
/
llm
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
postgres/scripts/01-create-tables.sql
68 строк
3 KB
Ivan Mezencev
123
22 ноя 2025, 22:12
22 ноя 2025, 22:12
d795232
Код
Авторство
О чём код?
-- Создание расширения для работы с векторами CREATE EXTENSION IF NOT EXISTS vector; -- Основная таблица чатов CREATE TABLE public.chat ( id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, created_at TIMESTAMP(6), title VARCHAR(255) ); ALTER TABLE public.chat OWNER TO postgres; -- Таблица записей чата CREATE TABLE public.chat_entry ( id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, content TEXT, created_at TIMESTAMP(6), role VARCHAR(255) CONSTRAINT chat_entry_role_check CHECK ((role)::TEXT = ANY (ARRAY['USER'::CHARACTER VARYING, 'ASSISTANT'::CHARACTER VARYING]::TEXT[])), chat_id BIGINT CONSTRAINT fkqcc1bnu77jh530e61twlq52ja REFERENCES public.chat(id) ); ALTER TABLE public.chat_entry OWNER TO postgres; -- ============================================= -- RAG (Retrieval-Augmented Generation) Tables -- ============================================= -- Таблица загруженных документов CREATE TABLE IF NOT EXISTS loaded_document ( id SERIAL PRIMARY KEY, filename VARCHAR(255) NOT NULL, content_hash VARCHAR(64) NOT NULL, document_type VARCHAR(10) NOT NULL, chunk_count INTEGER, loaded_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT unique_document UNIQUE (filename, content_hash) ); -- Индекс для быстрого поиска по имени файла CREATE INDEX IF NOT EXISTS idx_loaded_documents_filename ON loaded_document(filename); -- Таблица для векторного хранилища CREATE TABLE IF NOT EXISTS vector_store ( id VARCHAR(255) PRIMARY KEY, content TEXT, metadata JSON, embedding VECTOR(1024) ); -- Индекс HNSW для быстрого векторного поиска CREATE INDEX IF NOT EXISTS vector_store_hnsw_index ON vector_store USING hnsw (embedding vector_cosine_ops); -- ============================================= -- Комментарии по типам индексов: -- ============================================= -- HNSW (Hierarchical Navigable Small World) - эффективный для высокоразмерных векторов -- IVFFlat - Inverted File с плоским хранением кластеров, хорош для больших объемов данных -- Без индекса - прямой перебор всех векторов (медленно, но точно)