Changes between Version 5 and Version 6 of AdvancedPhase


Ignore:
Timestamp:
06/12/26 23:29:23 (3 days ago)
Author:
231012
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedPhase

    v5 v6  
    2121CREATE EXTENSION IF NOT EXISTS vector;
    2222}}}
     23
    2324* '''Чекор 2'''
    2425На табелите Activity, Service и Equipment се додава нова колона од тип vector(384). Димензијата 384 одговара на моделот all-MiniLM-L6-v2 кој се користи за генерирање на embeddings.
     
    2829ALTER TABLE Equipment ADD COLUMN embedding vector(384)
    2930}}}
     31
    3032* '''Чекор 3'''
    3133Embeddings се генерираат преку Python скрипта која користи sentence-transformers библиотека.
     
    106108
    107109}}}
     110
    108111* '''Чекор 4'''
    109 За брзо пребарување по сличност се креираат ivfflat индекси. Со ivfflat индекс векторите се групираат во кластери и се пребарува само во најблиските — многу побрзо.
     112За брзо пребарување по сличност се креираат ivfflat индекси. Со ivfflat индекс, векторите се групираат во кластери и се пребарува само во најблиските.
     113{{{
     114CREATE INDEX ON Activity  USING ivfflat (embedding vector_cosine_ops);
     115CREATE INDEX ON Service   USING ivfflat (embedding vector_cosine_ops);
     116CREATE INDEX ON Equipment USING ivfflat (embedding vector_cosine_ops);
     117}}}
     118
    110119* '''Чекор 5'''
    111120Се креираат PostgreSQL функции кои примаат вектор и враќаат N најслични записи сортирани по cosine similarity.
     121
     122'''Функција за слични активности'''
     123     {{{
     124CREATE OR REPLACE FUNCTION find_similar_activities(
     125    query_embedding vector,
     126    top_n INT DEFAULT 5
     127)
     128RETURNS TABLE (activity_id INT, name VARCHAR, description VARCHAR, similarity FLOAT) AS $$
     129    SELECT activity_id, name, description,
     130           1 - (embedding <=> query_embedding) AS similarity
     131    FROM Activity
     132    WHERE embedding IS NOT NULL
     133    ORDER BY embedding <=> query_embedding
     134    LIMIT top_n;
     135$$ LANGUAGE sql;
     136     }}}
     137'''Функција за слични услуги'''
     138{{{
     139CREATE OR REPLACE FUNCTION find_similar_services(
     140    query_embedding vector,
     141    top_n INT DEFAULT 5
     142)
     143RETURNS TABLE (serviceId INT, service_name VARCHAR, description VARCHAR, similarity FLOAT) AS $$
     144    SELECT serviceId, service_name, description,
     145           1 - (embedding <=> query_embedding) AS similarity
     146    FROM Service
     147    WHERE embedding IS NOT NULL
     148    ORDER BY embedding <=> query_embedding
     149    LIMIT top_n;
     150$$ LANGUAGE sql;
     151}}}
     152'''Функција за слична опрема'''
     153{{{
     154CREATE OR REPLACE FUNCTION find_similar_equipment(
     155    query_embedding vector,
     156    top_n INT DEFAULT 5
     157)
     158RETURNS TABLE (equipmentId INT, name VARCHAR, description VARCHAR, similarity FLOAT) AS $$
     159    SELECT equipmentId, name, description,
     160           1 - (embedding <=> query_embedding) AS similarity
     161    FROM Equipment
     162    WHERE embedding IS NOT NULL
     163    ORDER BY embedding <=> query_embedding
     164    LIMIT top_n;
     165$$ LANGUAGE sql;
     166}}}