kgrag/app_pkg/examples/get_3D.py
2026-07-29 18:10:19 +08:00

46 lines
1.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import os
import json
from typing import List
import httpx
import requests
def get_embeddings(embedding_texts: List[str]):
base_url=os.getenv("OPENAI_API_EMBEDDING_BASE","http://172.18.30.122:40060/v1")
embedding_base_url = os.path.join(base_url, "embeddings")
with httpx.Client(timeout=60) as client:
response = client.post(
embedding_base_url,
json={"model": "bge-m3", "input": embedding_texts},
headers={"Authorization": os.getenv("OPENAI_API_KEY","EMPTY")},
)
embedding_list = response.json()["data"][0]["embedding"]
return embedding_list
# 1. 组装请求体(与 SearchRequest 一一对应)
payload = { # 若不提供 query可改为传 query_vector
"top_k": 3,
"database_name": "XIAN",
"collection_name": "b9d47d5a6d66cbe2cd44a8ea4ad021fc",
"query_vector": get_embeddings(["和尚"]) # 如果本地已算好向量,可直接把 list[float] 写进来
}
# 2. 发送 POST 请求
url = "http://172.18.30.122:9079/search_3D"
headers = {"Content-Type": "application/json"}
resp = requests.post(url, data=json.dumps(payload), headers=headers, timeout=30)
# 3. 处理返回
if resp.status_code == 200:
data = resp.json()
if data.get("code") == 200:
print("检索成功:")
for item in data.get("data", []):
print("score:", item["score"])
print("text :", item["text"][:200], "...")
else:
print("业务逻辑异常:", data.get("message"))
else:
print("HTTP 异常:", resp.status_code, resp.text)