kgrag/app_pkg/examples/search_text.py
2026-06-30 13:35:52 +08:00

87 lines
3.2 KiB
Python

import os
from pymilvus import (
connections,
utility,
FieldSchema,
CollectionSchema,
DataType,
Collection,
MilvusClient,
db,
Function,
FunctionType,
AnnSearchRequest,
WeightedRanker
)
class Milvus_Database:
def __init__(self,user=os.getenv("Milvus_USER","root"),password=os.getenv("Milvus_PASSWORD","Milvus"),uri="http://172.18.30.165:19530"):
self.client = MilvusClient(
uri="http://172.18.30.165:19530",
token="root:Milvus"
)
def get_text_by_resource(self, collection_name, database_name,resource,text):
"""
return List :
"""
self.client.using_database(db_name=database_name)
iterator = self.client.query_iterator(
collection_name=collection_name,
batch_size=5,
filter=f"text like \"{text}\" and resource like \"{resource}\"",
output_fields=["id","resource","text"],
)
results = []
while True:
result = iterator.next()
if not result:
iterator.close()
break
results += result
return results
def get_chunk_by_id(self, collection_name, database_name,id):
"""
return List :
"""
try:
self.client.using_database(db_name=database_name)
if not self.client.has_collection(collection_name):
return []
else:
self.client.load_collection(collection_name)
iterator = self.client.query_iterator(
collection_name=collection_name,
batch_size=5,
filter=f"id=={id}",
output_fields=["id","text","resource"],
)
results = []
while True:
result = iterator.next()
if not result:
iterator.close()
break
results += result
return results
finally:
# 3. 无论成功还是失败,最终释放集合
try:
self.client.release_collection(collection_name)
except Exception as e:
print(f"释放集合失败: {e}")
def get_chunk(collection_name,database_name,resource,text,id):
milvus_db=Milvus_Database()
# results = milvus_db.get_text_by_resource(collection_name=collection_name,database_name=database_name,resource=resource,text=text)
results = milvus_db.get_chunk_by_id(collection_name=collection_name,database_name=database_name,id=id)
return {"code": 200, "message": "success", "data": results}
if __name__ == "__main__":
text = "你好"
# text = "应,进一步放大风险的危害,而传播环境的深刻变革对触发和放大生成式人工智 能传播风险也具有重要影响。生成式人工智能传播风险打破了独立、单层、定向的风险路径, 通过机内交互、人机交互与人人交互的复杂网络结构形成了联动、多层、多向的风险路径, 极易形成多领域共振传导。"
result = get_chunk(database_name="XIAN",collection_name="ye85a36d295a199730340c5c755c1e2b",id="459963917155397121",text=text,resource="test.md")
print(result)