You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

627 lines
19 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2025/3/16 20:09
# @Author : old-tom
# @File : vector_agent
# @Project : llmFunctionCallDemo
# @Desc : 向量数据库,解决相似度查询,例如 相机名称
import marqo
# 索引名称
INDEX_NAME = 'test_index'
# 初始化marqo
mq = marqo.Client(url='http://localhost:8882')
# mq.delete_index(INDEX_NAME)
def create_and_set_index():
"""
全局只能调用一次
:return:
"""
mq.create_index(INDEX_NAME, model="hf/e5-base-v2")
# 添加文档(测试用)
mq.index(INDEX_NAME).add_documents([
{
"carme_name": "中方国门AI算法",
"ip": "192.168.10.80",
"location": "国门顶部"
},
{
"carme_name": "中方国门AI算法0102",
"ip": "192.168.10.80",
"location": "国门顶部"
},
{
"carme_name": "中方国门入境1",
"ip": "192.168.10.77",
"location": "国门通道"
},
{
"carme_name": "中方国门入境2",
"ip": "192.168.10.79",
"location": "国门通道"
},
{
"carme_name": "中方国门入境摄像头中",
"ip": "192.168.10.72",
"location": "登临检验"
},
{
"carme_name": "中方国门入境摄像头右",
"ip": "192.168.10.74",
"location": "登临检验"
},
{
"carme_name": "中方国门入境摄像头左",
"ip": "192.168.10.75",
"location": "登临检验"
},
{
"carme_name": "中方国门出境1",
"ip": "192.168.10.76",
"location": "国门通道"
},
{
"carme_name": "中方国门出境2",
"ip": "192.168.10.78",
"location": "国门通道"
},
{
"carme_name": "中方国门出境摄像头右",
"ip": "192.168.10.71",
"location": "登临检验"
},
{
"carme_name": "中方国门出境摄像头左",
"ip": "192.168.10.73",
"location": "登临检验"
},
{
"carme_name": "中方国门-面向国门球机",
"ip": "192.168.10.215",
"location": "国门通道拐角"
},
{
"carme_name": "中方国门高点1",
"ip": "192.168.10.70",
"location": "国门顶部"
},
{
"carme_name": "北卡口AI摄像头全景",
"ip": "192.168.10.30",
"location": "北卡口对面"
},
{
"carme_name": "北卡口AI摄像头细节",
"ip": "192.168.10.30",
"location": "北卡口对面"
},
{
"carme_name": "北卡口入境摄像头入场4号通道",
"ip": "192.168.10.112",
"location": "入场通道"
},
{
"carme_name": "北卡口入境摄像头入场5号通道",
"ip": "192.168.10.114",
"location": "入场通道"
},
{
"carme_name": "北卡口入境摄像头入场6号通道",
"ip": "192.168.10.117",
"location": "入场通道"
},
{
"carme_name": "北卡口入境摄像头出场1号通道",
"ip": "192.168.10.115",
"location": "出场通道"
},
{
"carme_name": "北卡口入境摄像头出场2号通道",
"ip": "192.168.10.116",
"location": "出场通道"
},
{
"carme_name": "北卡口入境摄像头出场3号通道",
"ip": "192.168.10.113",
"location": "出场通道"
},
{
"carme_name": "北卡口出口道路监控",
"ip": "192.168.10.153",
"location": "路口"
},
{
"carme_name": "能投大厦高点1",
"ip": "192.168.10.89",
"location": "能投楼顶"
},
{
"carme_name": "南卡口AI算法2",
"ip": "192.168.10.210",
"location": "南卡口顶部"
},
{
"carme_name": "南卡口AI算法20102",
"ip": "192.168.10.210",
"location": "南卡口顶部"
},
{
"carme_name": "南卡口AI算法识别摄像机",
"ip": "192.168.10.91",
"location": "南卡口顶部"
},
{
"carme_name": "南卡口AI算法识别摄像机0102",
"ip": "192.168.10.91",
"location": "南卡口顶部"
},
{
"carme_name": "南卡口出境摄像头1号通道",
"ip": "192.168.10.100",
"location": "出境通道"
},
{
"carme_name": "南卡口出境摄像头2号通道",
"ip": "192.168.10.103",
"location": "出境通道"
},
{
"carme_name": "南卡口出境摄像头3号通道",
"ip": "192.168.10.104",
"location": "出境通道"
},
{
"carme_name": "南卡口出境摄像头4号通道",
"ip": "192.168.10.102",
"location": "出境通道"
},
{
"carme_name": "南卡口出境摄像头5号通道",
"ip": "192.168.10.99",
"location": "出境通道"
},
{
"carme_name": "南卡口出境摄像头6号通道",
"ip": "192.168.10.101",
"location": "出境通道"
},
{
"carme_name": "南卡口入境摄像头7号通道",
"ip": "192.168.10.98",
"location": "入境通道"
},
{
"carme_name": "南卡口入境摄像头8号通道",
"ip": "192.168.10.93",
"location": "入境通道"
},
{
"carme_name": "南卡口入境摄像头9号通道",
"ip": "192.168.10.97",
"location": "入境通道"
},
{
"carme_name": "南卡口入境摄像头10号通道",
"ip": "192.168.10.96",
"location": "入境通道"
},
{
"carme_name": "南卡口入境摄像头11号通道",
"ip": "192.168.10.94",
"location": "入境通道"
},
{
"carme_name": "南卡口入境摄像头12号通道",
"ip": "192.168.10.95",
"location": "入境通道"
},
{
"carme_name": "南卡口高点-1",
"ip": "192.168.10.90",
"location": "南卡口顶部"
},
{
"carme_name": "南卡口高点-2",
"ip": "192.168.10.92",
"location": "南卡口顶部"
},
{
"carme_name": "南卡口高点-3",
"ip": "192.168.3.12",
"location": "南卡口顶部"
},
{
"carme_name": "1.3公里封闭道路入境出场1",
"ip": "192.168.10.82",
"location": "南卡口顶部"
},
{
"carme_name": "1.3公里封闭道路入境出场2",
"ip": "192.168.10.88",
"location": "南卡口顶部"
},
{
"carme_name": "1.3公里封闭道路入境出场20102",
"ip": "192.168.10.88",
"location": "南卡口顶部"
},
{
"carme_name": "1.3公里封闭道路入境摄像头入场2",
"ip": "192.168.10.87",
"location": "南卡口顶部"
},
{
"carme_name": "1.3公里封闭道路入境摄像头入场20102",
"ip": "192.168.10.87",
"location": "南卡口顶部"
},
{
"carme_name": "1.3公里封闭道路入境入场1",
"ip": "192.168.10.81",
"location": "南卡口顶部"
},
{
"carme_name": "H9861号口摄像头入场",
"ip": "192.168.10.107",
"location": "H986停车场出入口"
},
{
"carme_name": "H9862号口摄像头出场",
"ip": "192.168.10.109",
"location": "H987停车场出入口"
},
{
"carme_name": "H9862号口摄像头入场",
"ip": "192.168.10.190",
"location": "H988停车场出入口"
},
{
"carme_name": "车辆定位AI摄像头",
"ip": "192.168.10.29",
"location": "H988停车场山上"
},
{
"carme_name": "车辆定位AI摄像头0102",
"ip": "192.168.10.29",
"location": "H989停车场山上"
},
{
"carme_name": "北山货场森林公园制高点",
"ip": "192.168.10.191",
"location": "H990停车场山上"
},
{
"carme_name": "边民互市入境摄像头出场",
"ip": "192.168.10.119",
"location": "边民互市"
},
{
"carme_name": "边民互市入境摄像头入场",
"ip": "192.168.10.118",
"location": "出入口"
},
{
"carme_name": "车辆缓冲区1号门入口",
"ip": "192.168.10.193",
"location": "出入口"
},
{
"carme_name": "车辆缓冲区2号门入口",
"ip": "192.168.10.195",
"location": "出入口"
},
{
"carme_name": "车辆缓冲区2号门出口",
"ip": "192.168.10.194",
"location": "出入口"
},
{
"carme_name": "车辆缓冲区1号门出口",
"ip": "192.168.10.192",
"location": "出入口"
},
{
"carme_name": "大贸查验场进口入境摄像头入场东口",
"ip": "192.168.10.181",
"location": "出入口"
},
{
"carme_name": "大贸查验场进口入境摄像头出场东口",
"ip": "192.168.10.180",
"location": "出入口"
},
{
"carme_name": "大贸查验场(进口)入境摄像头入场(西口)",
"ip": "192.168.10.106",
"location": "出入口"
},
{
"carme_name": "大贸查验场进口高点1",
"ip": "192.168.10.156",
"location": "高点"
},
{
"carme_name": "大贸查验场出口出境摄像头出场2",
"ip": "192.168.10.110",
"location": "出入口"
},
{
"carme_name": "大贸查验场出口出境摄像头入场左",
"ip": "192.168.10.184",
"location": "出入口"
},
{
"carme_name": "大贸查验场出口出境摄像头出场1",
"ip": "192.168.10.111",
"location": "出入口"
},
{
"carme_name": "北山高速收费站入境摄像头入场出方向",
"ip": "192.168.10.170",
"location": "道路"
},
{
"carme_name": "北山高速收费站入境摄像头入场入方向",
"ip": "192.168.10.169",
"location": "道路"
},
{
"carme_name": "坝洒高点",
"ip": "192.168.10.164",
"location": ""
},
{
"carme_name": "停车场卡口(坝洒)入境摄像头入场",
"ip": "192.168.10.165",
"location": "出入口"
},
{
"carme_name": "停车场卡口(坝洒)入境摄像头出场",
"ip": "192.168.10.166",
"location": "出入口"
},
{
"carme_name": "东西干道卡口入境摄像头入场",
"ip": "192.168.10.136",
"location": "出入口"
},
{
"carme_name": "东西干道卡口入境摄像头出场",
"ip": "192.168.10.135",
"location": "出入口"
},
{
"carme_name": "主卡口(临时)货场大门-高点",
"ip": "192.168.10.146",
"location": ""
},
{
"carme_name": "利丰酒店往边民互市高点",
"ip": "192.168.10.211",
"location": "利丰酒店楼顶"
},
{
"carme_name": "利丰货场近御峰货场入境摄像头出场2",
"ip": "192.168.10.132",
"location": "出入口"
},
{
"carme_name": "利丰酒店往边民互市高点2",
"ip": "192.168.10.212",
"location": "利丰酒店楼顶"
},
{
"carme_name": "利丰货场近御峰货场入境摄像头入场2",
"ip": "192.168.10.139",
"location": "出入口"
},
{
"carme_name": "利丰货场入境摄像头出场左",
"ip": "192.168.10.127",
"location": "出入口"
},
{
"carme_name": "利丰货场入境摄像头入场左",
"ip": "192.168.10.128",
"location": "出入口"
},
{
"carme_name": "利丰货场入境摄像头出场右",
"ip": "192.168.10.126",
"location": "出入口"
},
{
"carme_name": "利丰货场-高点",
"ip": "192.168.10.125",
"location": ""
},
{
"carme_name": "利丰货场近御峰货场入境摄像头出场1",
"ip": "192.168.10.131",
"location": "出入口"
},
{
"carme_name": "利丰货场入境摄像头入场右",
"ip": "192.168.10.129",
"location": "出入口"
},
{
"carme_name": "利丰货场近御峰货场入境摄像头入场1",
"ip": "192.168.10.130",
"location": "出入口"
},
{
"carme_name": "南屏高速收费站入境摄像头出场",
"ip": "192.168.10.168",
"location": "道路"
},
{
"carme_name": "南屏高速收费站入境摄像头入场",
"ip": "192.168.10.167",
"location": "道路"
},
{
"carme_name": "停车场卡口老表入境摄像头入场",
"ip": "192.168.10.160",
"location": "出入口"
},
{
"carme_name": "停车场卡口老表右入境摄像头入场",
"ip": "192.168.10.162",
"location": "出入口"
},
{
"carme_name": "停车场卡口老表入境摄像头出场",
"ip": "192.168.10.161",
"location": "出入口"
},
{
"carme_name": "停车场卡口老表右入境摄像头出场",
"ip": "192.168.10.163",
"location": "出入口"
},
{
"carme_name": "槟榔寨站入境摄像头入场",
"ip": "192.168.10.173",
"location": "道路"
},
{
"carme_name": "槟榔寨站入境摄像头出场",
"ip": "192.168.10.174",
"location": "道路"
},
{
"carme_name": "外围冷链停车区入境摄像头出场",
"ip": "192.168.10.158",
"location": "出入口"
},
{
"carme_name": "外围冷链停车区入境摄像头入场",
"ip": "192.168.10.157",
"location": "出入口"
},
{
"carme_name": "清水河隧道出",
"ip": "192.168.10.175",
"location": "道路"
},
{
"carme_name": "清水河隧道入",
"ip": "192.168.10.186",
"location": "道路"
},
{
"carme_name": "商阜路闭环区道路监控-高点",
"ip": "192.168.10.154",
"location": "道路"
},
{
"carme_name": "商阜路闭环区道路监控道路监控高点2",
"ip": "192.168.10.155",
"location": "道路"
},
{
"carme_name": "商阜路闭环区道路监控道路监控-后",
"ip": "192.168.10.152",
"location": "道路"
},
{
"carme_name": "越南城十字路口-东西干道入境摄像头出场",
"ip": "192.168.10.172",
"location": "道路"
},
{
"carme_name": "越南城十字路口-东西干道入境摄像头入场",
"ip": "192.168.10.171",
"location": "道路"
},
{
"carme_name": "停车场卡口能投入境摄像头出场",
"ip": "192.168.10.124",
"location": "出入口"
},
{
"carme_name": "停车场卡口能投入境摄像头入场2",
"ip": "192.168.10.123",
"location": "出入口"
},
{
"carme_name": "停车场卡口能投入境摄像头入场1",
"ip": "192.168.10.122",
"location": "出入口"
},
{
"carme_name": "御峰货场冷链入境摄像头出场出口",
"ip": "192.168.10.145",
"location": "出入口"
},
{
"carme_name": "御峰货场(冷链)-高点",
"ip": "192.168.10.137",
"location": ""
},
{
"carme_name": "御峰货场冷链入境摄像头入场进口",
"ip": "192.168.10.133",
"location": "出入口"
},
{
"carme_name": "御峰货场冷链入境摄像头入场出口",
"ip": "192.168.10.138",
"location": "出入口"
},
{
"carme_name": "御峰货场冷链入境摄像头出场进口",
"ip": "192.168.10.141",
"location": "出入口"
},
{
"carme_name": "御峰货场干货入境摄像头入场",
"ip": "192.168.10.140",
"location": "出入口"
},
{
"carme_name": "御峰货场干货入境摄像头入场2",
"ip": "192.168.10.148",
"location": "出入口"
},
{
"carme_name": "御峰货场干货入境摄像头出场",
"ip": "192.168.10.144",
"location": "出入口"
},
{
"carme_name": "御峰货场(干货)-高点1",
"ip": "192.168.10.142",
"location": ""
},
{
"carme_name": "御峰货场(干货)-高点2",
"ip": "192.168.10.143",
"location": ""
},
{
"carme_name": "御峰货场干货入境摄像头出场2",
"ip": "192.168.10.147",
"location": "出入口"
}],
tensor_fields=["carme_name"]
)
def query_vector_db(query):
return mq.index(INDEX_NAME).search(q=query)
if __name__ == '__main__':
# create_and_set_index()
rt = query_vector_db('\u5357\u5361\u53e3AI\u7b97\u6cd5\u8bc6\u522b\u6444\u50cf\u673a')
# TODO 根据 _score字段 取出相似度最高的结果
if rt:
for ele in rt['hits']:
print(ele)