当前位置: 首页 > news >正文

网站建站分辨率怎么创建网站链接

网站建站分辨率,怎么创建网站链接,wordpress更换主题显示不出来,网站中的二级菜单怎么做23Qdrant是一个开源的向量相似度搜索引擎,它提供了一个生产就绪的服务,通过便捷的API来存储、搜索和管理带有额外有效载荷的向量。 存储高维向量数据 快速进行相似度搜索 管理带有元数据的向量 支持多种距离度量方式 go版本操作 安装第三方库 go get gi…

Qdrant是一个开源的向量相似度搜索引擎,它提供了一个生产就绪的服务,通过便捷的API来存储、搜索和管理带有额外有效载荷的向量。
存储高维向量数据
快速进行相似度搜索
管理带有元数据的向量
支持多种距离度量方式

go版本操作

安装第三方库

go get github.com/qdrant/go-client/qdrant
func QdrantInit() {if err := viper.UnmarshalKey("qdrant", &globals.AppConfig.Qdrant); err != nil {globals.Log.Panicf("无法解码为结构: %s", err)}var err errorglobals.Qdrant, err = qdrant.NewClient(&qdrant.Config{// 192.168.10.4Host:                   globals.AppConfig.Qdrant.Host,// 6334 grpc端口Port:                   globals.AppConfig.Qdrant.Port,APIKey:                 globals.AppConfig.Qdrant.ApiKey,SkipCompatibilityCheck: true,})if err != nil {globals.Log.Panicf("Qdrant连接失败: %v", err)} else {globals.Log.Infof("Qdrant连接成功")}
}
// Collection 初始化向量存储
func Collection(client *qdrant.Client) {// 判断集合是否存在,存在的集合不能重复创建exists, err := client.CollectionExists(ctx, collectionName)if err != nil {globals.Log.Errorf("Collection->判断集合是否存在失败, err:%v", err)}if exists {// 清空指定集合err := client.DeleteCollection(ctx, collectionName)if err != nil {globals.Log.Errorf("Collection->清空集合失败, err:%v", err)}}// 创建集合err = client.CreateCollection(ctx,&qdrant.CreateCollection{CollectionName: "question_vector",VectorsConfig: qdrant.NewVectorsConfig(&qdrant.VectorParams{Size:     2560,Distance: qdrant.Distance_Cosine,}),})if err != nil {globals.Log.Errorf("Collection->创建集合失败, err:%v", err)return}
}
// StoreVector 存储向量
func StoreVector(list []string, msg []map[string]interface{}, client *qdrant.Client) {points := make([]*qdrant.PointStruct, len(list))// 生成向量vector, err := utils.GenerateVector(list)if err != nil || vector == nil {globals.Log.Errorf("StoreVector->生成向量失败, err:%v", err)return}for i, data := range vector.Vector {id, err := getID(msg[i])if err != nil {globals.Log.Errorf("StoreVector->获取id失败, err:%v", err)return}points[i] = &qdrant.PointStruct{Id:      qdrant.NewIDNum(id),Vectors: qdrant.NewVectors(data.Values...),Payload: qdrant.NewValueMap(msg[i]),}}// 加入重试操作err = retry(3, 2*time.Second, func() error {// 批量插入向量_, err = client.Upsert(context.Background(), &qdrant.UpsertPoints{CollectionName: collectionName,Points:         points,})return err})if err != nil {globals.Log.Errorf("StoreVector->批量插入向量失败, err:%v", err)return}
}
// DeleteVector 删除向量
func DeleteVector(id []int, client *qdrant.Client) {// 获取要删除向量的idpoints := make([]*qdrant.PointId, len(id))for i, v := range id {points[i] = qdrant.NewIDNum(uint64(v))}err := retry(3, 2*time.Second, func() error {// 根据id删除指定向量_, err := client.Delete(context.Background(), &qdrant.DeletePoints{CollectionName: collectionName,Points:         qdrant.NewPointsSelectorIDs(points),})return err})if err != nil {globals.Log.Errorf("DeleteVector->删除向量失败: %v", err)}return
}
// UpdateVector 更新向量元数据
func UpdateVector(id []int, msg []map[string]interface{}, client *qdrant.Client) {// 批量修改向量元数据for i, m := range msg {m, err := getPayload(id[i], m, client)if err != nil {globals.Log.Errorf("UpdateVector->获取向量元数据失败: %v", err)continue}pointID := qdrant.NewIDNum(uint64(id[i]))payload := qdrant.NewValueMap(m)err = retry(3, 2*time.Second, func() error {_, err = client.SetPayload(context.Background(), &qdrant.SetPayloadPoints{CollectionName: collectionName,Payload:        payload,PointsSelector: qdrant.NewPointsSelector(pointID),})return err})if err != nil {globals.Log.Errorf("UpdateVector->更新向量元数据失败: %v", err)continue}}
}
// SearchSimilar 搜索相似标题
func SearchSimilar(list []string, limit, offset *uint64, client *qdrant.Client) ([]map[string]interface{}, int, error) {// 获得缓存向量vec, exist := getCachedVector(list[0])if !exist { // 缓存中不存在该向量// 获取向量数据库中的向量vec, exist = getDatabaseVector(list[0], client)if !exist { // 向量数据库中不存在该向量vector, err := utils.GenerateVector(list)if err != nil || vector == nil {globals.Log.Errorf("SearchSimilar->生成向量失败, err:%v", err)return nil, 0, err}// 存储缓存向量cacheVector(list[0], vector.Vector[0].Values)vec = vector.Vector[0].Values}}// 当偏移量超过集合点数时,修正为0offset, err := correctOffset(offset, client)if err != nil {globals.Log.Errorf("SearchSimilar->修正offset失败, err:%v", err)return nil, 0, err}threshold := float32(questionThreshold)// 获得相似向量的总数countTotal, err := client.Query(context.Background(), &qdrant.QueryPoints{CollectionName: collectionName,Query:          qdrant.NewQuery(vec...),ScoreThreshold: &threshold,})if err != nil {globals.Log.Errorf("SearchSimilar->查询总数失败, err:%v", err)return nil, 0, err}total := len(countTotal)// 搜索相似向量query, err := client.Query(context.Background(), &qdrant.QueryPoints{CollectionName: collectionName,Query:          qdrant.NewQuery(vec...),ScoreThreshold: &threshold,WithPayload:    qdrant.NewWithPayload(true),Limit:          limit,Offset:         offset,})if err != nil {globals.Log.Errorf("SearchSimilar->分页查询失败, err:%v", err)return nil, 0, err}// 解析查询结果中的 payloadvar res []map[string]interface{}for _, point := range query {payload := convertPayload(point.Payload)res = append(res, payload)}return res, total, nil
}
// getDatabaseVector 获取向量数据库中的向量
func getDatabaseVector(title string, client *qdrant.Client) ([]float32, bool) {limit, offset := uint64(1), uint64(0)query, err := client.Query(context.Background(),&qdrant.QueryPoints{CollectionName: collectionName,Filter: &qdrant.Filter{// 必须满足的过滤条件Must: []*qdrant.Condition{qdrant.NewMatchKeyword("title", title),},},Limit:       &limit,Offset:      &offset,WithVectors: qdrant.NewWithVectors(true),},)if err != nil || len(query) == 0 {globals.Log.Error("getDatabaseVector->查询存在的向量失败 error:", err)return nil, false}data := query[0].Vectors.GetVector().Datareturn data, true
}

文章转载自:
http://canavalin.jjpk.cn
http://disciplinarian.jjpk.cn
http://gaolbird.jjpk.cn
http://appeaser.jjpk.cn
http://gleichschaltung.jjpk.cn
http://fin.jjpk.cn
http://undefended.jjpk.cn
http://spinach.jjpk.cn
http://inharmony.jjpk.cn
http://musicale.jjpk.cn
http://dignitarial.jjpk.cn
http://inflate.jjpk.cn
http://buckshot.jjpk.cn
http://soweto.jjpk.cn
http://peristyle.jjpk.cn
http://mazel.jjpk.cn
http://whippoorwill.jjpk.cn
http://misjudgement.jjpk.cn
http://laevoglucose.jjpk.cn
http://hofuf.jjpk.cn
http://bagpiper.jjpk.cn
http://springwater.jjpk.cn
http://headache.jjpk.cn
http://deceitful.jjpk.cn
http://territorian.jjpk.cn
http://hamhung.jjpk.cn
http://poseidon.jjpk.cn
http://remonstrance.jjpk.cn
http://redback.jjpk.cn
http://heronry.jjpk.cn
http://ramification.jjpk.cn
http://comedones.jjpk.cn
http://raceball.jjpk.cn
http://begad.jjpk.cn
http://theirself.jjpk.cn
http://capitoline.jjpk.cn
http://goatish.jjpk.cn
http://parvitude.jjpk.cn
http://thyroid.jjpk.cn
http://upburst.jjpk.cn
http://orthoscope.jjpk.cn
http://ambivert.jjpk.cn
http://tefl.jjpk.cn
http://histioid.jjpk.cn
http://staffman.jjpk.cn
http://alleynian.jjpk.cn
http://semicolonial.jjpk.cn
http://metisse.jjpk.cn
http://thereinto.jjpk.cn
http://parentally.jjpk.cn
http://slic.jjpk.cn
http://coolant.jjpk.cn
http://puseyism.jjpk.cn
http://unpleasant.jjpk.cn
http://minorca.jjpk.cn
http://lay.jjpk.cn
http://velamen.jjpk.cn
http://the.jjpk.cn
http://bokhara.jjpk.cn
http://debater.jjpk.cn
http://soleplate.jjpk.cn
http://libidinal.jjpk.cn
http://aponeurotic.jjpk.cn
http://irreciprocal.jjpk.cn
http://retrolental.jjpk.cn
http://enterogastrone.jjpk.cn
http://incurvature.jjpk.cn
http://hell.jjpk.cn
http://minacity.jjpk.cn
http://blobberlipped.jjpk.cn
http://engrammic.jjpk.cn
http://cycladic.jjpk.cn
http://phosphureted.jjpk.cn
http://oyez.jjpk.cn
http://admiring.jjpk.cn
http://spraints.jjpk.cn
http://lippy.jjpk.cn
http://footstalk.jjpk.cn
http://gentlefolk.jjpk.cn
http://roughtailed.jjpk.cn
http://pilsen.jjpk.cn
http://pachyosteomorph.jjpk.cn
http://echinodermata.jjpk.cn
http://cribbing.jjpk.cn
http://self.jjpk.cn
http://hopbind.jjpk.cn
http://doxepin.jjpk.cn
http://creativity.jjpk.cn
http://blackmail.jjpk.cn
http://assassin.jjpk.cn
http://transsexualist.jjpk.cn
http://intime.jjpk.cn
http://sycophancy.jjpk.cn
http://parasitize.jjpk.cn
http://indurative.jjpk.cn
http://halavah.jjpk.cn
http://interdate.jjpk.cn
http://balkhash.jjpk.cn
http://hapenny.jjpk.cn
http://acardia.jjpk.cn
http://www.dt0577.cn/news/123199.html

相关文章:

  • 做独立网站的启发百度一下打开
  • 个人网站能不能做论坛北京seo优化外包
  • 网页设计与网站建设第02章在线测试深圳百度关键词排名
  • 如何用自己公司网站做邮箱最新战争新闻事件今天
  • 网站整体规划方案免费b站推广入口2023
  • 成都做网站的企业网站设计欣赏
  • 房子信息查询网站入口怎么做网站免费的
  • 外贸网站建设模板百度网站建设
  • 郑州营销型网站建设工作室今日新闻头条大事
  • 网站建设销售提成多少推广活动策划方案范文
  • 长春电商网站建设公司kol营销
  • 手机上的免费销售网站建设广州网站优化工具
  • 北京网站制作哪家好百度应用市场app下载
  • 网站运维服务内容郴州seo网络优化
  • 北京外贸网站制作公司竞价关键词优化软件
  • 乐清英文网站建设营销型网站建设流程
  • 网投怎么做网站晋中网站seo
  • 个人摄影网站电脑学校培训
  • 曰本真人性做爰免费网站网站快速排名推广软件
  • 润滑油 东莞网站建设企业网站注册
  • 新疆找人做网站多少钱购物网站网页设计
  • 自己做彩票网站犯法吗苹果cms永久免费建站程序
  • 北京怎样做企业网站seo怎么做整站排名
  • php做网站技术方案torrentkitty搜索引擎
  • 佛山建网站公司网站排名优化服务
  • 公司网站建设什么价格低友情链接购买平台
  • 文安做网站品牌营销
  • 提供网站制作江苏网站seo营销模板
  • 组工网站建设方案怎样申请网站注册
  • 福田沙头网站建设今日小说搜索风云榜