laravel报错 No query results for model [App\Post]. 的解决方法

这个通常由路由绑定出的问题,注意有绑定模型的路由,同路径的路由需要放在没绑定路由的后面

例如:/posts/create 和/posts/{post}的是同路径,/posts/{post}必须放在/posts/create 后面

顺序放反了,会报错

# (二)使用m3e + faiss+flask完成文本检索 # 1.OpenMP 库重复加载导致的报错 # 参考os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE" import os import numpy as np os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE" # 2.导入需要的基础库 import faiss from sentence_transformers import SentenceTransformer from flask import Flask, render_template, request, jsonify, redirect from sklearn.metrics.pairwise import cosine_similarity from pymilvus import ( connections, Collection, CollectionSchema, DataType, utility, FieldSchema ) # 3.使用合适方法加载给定的数据corpus.txt,数据量较多请获取前五百行, # 当然自己也可以自由设置获取的行,根据自己电脑性能而定。 # 4.数据当中有数字有文本,只获取文本即可 def load_texts(file_path, counts=500): data = [] with open(file_path, 'r', encoding='utf8') as f: for i, line in enumerate(f): if i > counts: break load = line.strip().split('\t', 1) if len(load) == 2: data.append(load[1]) else: data.append(line.strip()) return data data = 'corpus.txt' docs = load_texts(data) # 5.加载本地的预训练模型和分词器 model = SentenceTransformer(r"C:\Users\87093\Desktop\m3e-base") # 6.定义相关函数实现文本批量转成模型的向量表示 # 7.定义相关函数将文本query编码成向量embedding进行文本检索、相似度计算 '''6, 7 代码如下''' def encode_embeddings(docs, model): return model.encode(docs, normalize_embeddings=True) # 8.定义相关函数当得到的向量进行归一化(标准化)使其每个向量的长度(L2范数) # 变为1作特征向量作相似度计算例如余弦相似度 '''encode使用过程中已经进行归一化''' # 9.将以上函数进行正确调用 '''下面一起调用''' # 10.获取每个向量的维度用于FAISS索引 # 11.创建一个FAISS的内积索引作归一化后的向量的余弦相似度计算 def build_index(embeddings): dim = embeddings.shape[1] index = faiss.IndexFlatIP(dim) index.add(np.array(embeddings, dtype='float32')) return index # 12.把所有归一化的向量加入索引作高效的相似文本检索 docs_embeddings = encode_embeddings(docs, model) index = build_index(docs_embeddings) # 13.flask封装代码 app = Flask(__name__) # 14.实现API检索接口进行搜索实现,实现query异常处理判断,返回 JSON # 响应:将结果列表封装为 JSON 格式,通过 Flask 的 jsonify 返回给客户端。 @app.route('/', methods=['GET', 'POST']) def search(): results = [] error = '' query = '' if request.method == 'POST': query = request.form.get('query', '').strip() if not query: return '请输入正确的要检索的内容' else: try: q = encode_embeddings([query], model) D, I = index.search(np.array(q, dtype='float32') , 5) for rank, idx in enumerate(I[0]): sim = float(D[0][rank]) results.append({ 'text':docs[idx], 'score':f'{sim:.2f}' }) except Exception as e: print(f'错误:{str(e)}') return render_template('index.html', query=query, error=error, results=results) if __name__ == '__main__': app.run(debug=True, host='0.0.0.0', port=5001) @app.route('/', methods=['GET', 'POST']) def api_search(): results = [] error = '' data = request.get_json() query = data.get('query', '') if request.method == 'POST': if not query: return '请输入正确的要检索的内容' else: try: q = encode_embeddings([query], model) D, I = index.search(np.array(q, dtype='float32'), 5) for rank, idx in enumerate(I[0]): sim = float(D[0][rank]) results.append({ 'text':docs[idx], 'score':f'{sim:.2f}' }) except Exception as e: print(f'错误:{str(e)}') return jsonify({ 'results':results, 'error':error }) if __name__ == '__main__': app.run(debug=True, host='0.0.0.0', port=5000) # 15.前端html实现正确 # 16.输出查询文本转换向量正确 # 17.查询结果返回正确 # 18.项目当中方法参数可以自由设置 # 19.效果展示如下 如果效果没有实现仅仅扣效果分也就是当前分值 # 请帮我解释一下这些代码,在原来代码的基础上给每一行都加上对应的注释
最新发布
07-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值