From 84f3dae62987ec1fe6ffa74e04e47bd92d04f001 Mon Sep 17 00:00:00 2001 From: narawat Date: Fri, 24 Jul 2026 21:40:12 +0700 Subject: [PATCH] update --- src/interface.jl | 95 +++++++++++++++++++++++------------------------- 1 file changed, 46 insertions(+), 49 deletions(-) diff --git a/src/interface.jl b/src/interface.jl index 40bf717..7550fe6 100755 --- a/src/interface.jl +++ b/src/interface.jl @@ -5,60 +5,57 @@ export get_embedding_nats using GeneralUtils, msghandler - """ - get_embedding_nats(nats_server_url::String, texts::Vector{String}, sendto_topic::String, fileserver_url::String) +""" Fetch embeddings for a list of texts from a NATS-based embedding service. - Fetch embeddings for a list of texts from a NATS-based embedding service. +# Arguments +- `nats_conn_str::String`: NATS server connection URL +- `texts::Vector{String}`: List of text strings to generate embeddings for +- `sendto_topic::String`: NATS topic to send the embedding request to +- `fileserver_url::String`: URL of the file server for additional data - # Arguments - - `nats_server_url::String`: NATS server connection URL - - `texts::Vector{String}`: List of text strings to generate embeddings for - - `sendto_topic::String`: NATS topic to send the embedding request to - - `fileserver_url::String`: URL of the file server for additional data +# Returns +- `Vector` of embeddings, where each embedding is a vector of floats (Vector{Float32} or Vector{Float64}) - # Returns - - `Vector` of embeddings, where each embedding is a vector of floats (Vector{Float32} or Vector{Float64}) +# Example +```julia +nats_conn_str = "nats://username:password@yiem.cc:4222" +texts = ["Hello world", "Another text"] +sendto_topic = "embedding.service" +fileserver_url = "http://localhost:8080" +embeddings = get_embedding_nats(nats_server_url, texts, sendto_topic, fileserver_url) +``` +""" +function get_embedding_nats(nats_conn_str::String, texts::Vector{String}, sendto_topic::String, + fileserver_url::String) + nats_conn = NATS.connect(nats_conn_str) + return get_embedding_nats(nats_conn, texts, sendto_topic, fileserver_url) +end - # Example - ```julia - nats_server_url = "nats://localhost:4222" - texts = ["Hello world", "Another text"] - sendto_topic = "embedding.service" - fileserver_url = "http://localhost:8080" - embeddings = get_embedding_nats(nats_server_url, texts, sendto_topic, fileserver_url) - ``` - """ - function get_embedding_nats(nats_server_url::String, texts::Vector{String}, sendto_topic::String, - fileserver_url::String) - nats_conn = NATS.connect(nats_server_url) - return get_embedding_nats(nats_conn, texts, sendto_topic, fileserver_url) - end - - function get_embedding_nats(nats_conn::NATS.Connection, texts::Vector{String}, sendto_topic::String, - fileserver_url::String) - println("Generating embeddings for $(length(texts)) texts...") - documents_dict = Dict("documents" => texts) - payloads = [("documents", documents_dict, "dictionary")] - _, msg_envelope_json_str = msghandler.smartpack( - sendto_topic, - payloads; - msg_purpose="embedding", - fileserver_url=fileserver_url) - - reply = NATS.request(nats_conn, - sendto_topic, - msg_envelope_json_str, timeout=300) - incoming_env_json_str = String(reply.payload) - incoming_env = msghandler.smartunpack(incoming_env_json_str) - embedding_response = incoming_env["payloads"][1][2] - - result = [] - for i in embedding_response["data"] - embedding_vector = i["embedding"] - push!(result, embedding_vector) - end - return result +function get_embedding_nats(nats_conn::NATS.Connection, texts::Vector{String}, sendto_topic::String, + fileserver_url::String) + println("Generating embeddings for $(length(texts)) texts...") + documents_dict = Dict("documents" => texts) + payloads = [("documents", documents_dict, "dictionary")] + _, msg_envelope_json_str = msghandler.smartpack( + sendto_topic, + payloads; + msg_purpose="embedding", + fileserver_url=fileserver_url) + + reply = NATS.request(nats_conn, + sendto_topic, + msg_envelope_json_str, timeout=300) + incoming_env_json_str = String(reply.payload) + incoming_env = msghandler.smartunpack(incoming_env_json_str) + embedding_response = incoming_env["payloads"][1][2] + + result = [] + for i in embedding_response["data"] + embedding_vector = i["embedding"] + push!(result, embedding_vector) end + return result +end