diff options
author | Lain Soykaf <lain@lain.com> | 2024-05-19 14:41:05 +0400 |
---|---|---|
committer | Lain Soykaf <lain@lain.com> | 2024-05-19 14:41:05 +0400 |
commit | 1b4f1db9b2990f725a06f0dff41980c51853c5e9 (patch) | |
tree | 3bef71c11d7cb3b96b25878a3b61732eb0583f6b | |
parent | dbaab6f54e306e5fb930ce1ed0699631c8aeaae1 (diff) | |
download | pleroma-1b4f1db9b2990f725a06f0dff41980c51853c5e9.tar.gz pleroma-1b4f1db9b2990f725a06f0dff41980c51853c5e9.zip |
QdrantSearch: Support pagination.
-rw-r--r-- | lib/pleroma/search/qdrant_search.ex | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/pleroma/search/qdrant_search.ex b/lib/pleroma/search/qdrant_search.ex index 5ae04be78..283c43075 100644 --- a/lib/pleroma/search/qdrant_search.ex +++ b/lib/pleroma/search/qdrant_search.ex @@ -54,10 +54,11 @@ defmodule Pleroma.Search.QdrantSearch do } end - defp build_search_payload(embedding) do + defp build_search_payload(embedding, options) do %{ vector: embedding, - limit: 20 + limit: options[:limit] || 20, + offset: options[:offset] || 0 } end @@ -96,12 +97,15 @@ defmodule Pleroma.Search.QdrantSearch do end @impl true - def search(_user, query, _options) do + def search(_user, query, options) do query = "Represent this sentence for searching relevant passages: #{query}" with {:ok, embedding} <- get_embedding(query), {:ok, %{body: %{"result" => result}}} <- - QdrantClient.post("/collections/posts/points/search", build_search_payload(embedding)) do + QdrantClient.post( + "/collections/posts/points/search", + build_search_payload(embedding, options) + ) do ids = Enum.map(result, fn %{"id" => id} -> Ecto.UUID.dump!(id) |