module

Memo::Search

Semantic search operations using USearch HNSW index

Instance methods

mark_as_read(db : DB::Database, chunk_ids : Array(Int64))

Mark chunks as read (increment read_count)

Source
semantic(db : DB::Database, embedding : Array(Float64), service_id : Int64, usearch_index : USearch::Index, limit : Int32 = 10, min_score : Float64 = 0.7, filters : Filters | Nil = nil, detail : Symbol = :reference, sql_where : String | Nil = nil, like : Array(String) | Nil = nil, match : String | Nil = nil, include_text : Bool = true) : Array(Result)

Semantic search using USearch HNSW index

Returns results ranked by cosine similarity.

IMPORTANT: Must provide service_id to ensure embeddings are from same vector space.

When metadata filters are present (source_type, like, match, sql_where), pre-filters via SQL to get valid embedding rowids, then uses USearch filtered_search. When no filters, uses direct USearch search.

Source

Nested types