一,代码:
from flask import Blueprint,jsonify,render_template,request
from app import milvus_client
from pymilvus import FieldSchema, DataType, CollectionSchema, Collection, connections
from helpers.utils import success_response
from sentence_transformers import SentenceTransformer
import ast
vector = Blueprint('vector', __name__)
transformer = SentenceTransformer('/data/python/flask/study/all-MiniLM-L6-v2')
# 连接 Milvus 集合
search_params = {
'metric_type': 'COSINE',
'params': {
'nprobe': 10 # 搜索时探测的聚类中心数量
}
}
def embed_search(search_string):
search_embeddings = transformer.encode(search_string)
return search_embeddings
def search_for_articles(search_string):
user_vector = embed_search(search_string)
print("要搜索的内容:")
print(user_vector)
hits = milvus_client.search(
collection_name="article",
data=[user_vector],
anns_field='content_vector',
limit=1,
search_params=search_params,
filter='',
output_fields=['id', 'content', 'product_ids']
)
return hits
@vector.route("/search/", methods=['GET'])
def search():
# collection.load()
milvus_client.load_collection("article")
search_string = "律师对这个事怎么看?"
results = search_for_articles(search_string)
print(results)
#列出所有数据库
resOne = {
"id": results[0][0]['id'],
"content": results[0][0]['entity']['content'],
}
return success_response(resOne)
二,测试结果:
![image]()