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

wordpress计数插件云南网络优化公司有哪些

wordpress计数插件,云南网络优化公司有哪些,wordpress合并js,互联网企业排名文章目录 上下文关联对话轮数向量匹配 top k控制生成质量的参数参数设置心得 上下文关联 上下文关联相关参数#xff1a; 知识相关度阈值score_threshold内容条数k是否启用上下文关联chunk_conent上下文最大长度chunk_size 其主要作用是在所在文档中扩展与当前query相似度较高… 文章目录 上下文关联对话轮数向量匹配 top k控制生成质量的参数参数设置心得 上下文关联 上下文关联相关参数 知识相关度阈值score_threshold内容条数k是否启用上下文关联chunk_conent上下文最大长度chunk_size 其主要作用是在所在文档中扩展与当前query相似度较高的知识库的内容作为相关信息与query按照prompt规则组合后作为输入获得模型的回答。 获取查询句query嵌入faiss.py def similarity_search_with_score(self, query: str, k: int 4) - List[Tuple[Document, float]]:Return docs most similar to query.Args:query: Text to look up documents similar to.k: Number of Documents to return. Defaults to 4.Returns:List of Documents most similar to the query and score for eachembedding self.embedding_function(query)docs self.similarity_search_with_score_by_vector(embedding, k)return docs上下文生成MyFAISS.py def seperate_list(self, ls: List[int]) - List[List[int]]:# TODO: 增加是否属于同一文档的判断lists []ls1 [ls[0]]for i in range(1, len(ls)):if ls[i - 1] 1 ls[i]:ls1.append(ls[i])else:lists.append(ls1)ls1 [ls[i]]lists.append(ls1)return listsdef similarity_search_with_score_by_vector(self, embedding: List[float], k: int 4) - List[Document]:faiss dependable_faiss_import()# (1,1024)vector np.array([embedding], dtypenp.float32)# 默认FALSEif self._normalize_L2:faiss.normalize_L2(vector)# shape均为(1, k)这步获取与query有top-k相似度的知识库scores, indices self.index.search(vector, k)docs []id_set set()store_len len(self.index_to_docstore_id)rearrange_id_list False# 遍历找到的k个最相似知识库的索引# k是第一次的筛选条件score是第二次的筛选条件for j, i in enumerate(indices[0]):if i -1 or 0 self.score_threshold scores[0][j]:# This happens when not enough docs are returned.continueif i in self.index_to_docstore_id:_id self.index_to_docstore_id[i]# 执行接下来的操作else:continue# index→id→contentdoc self.docstore.search(_id)if (not self.chunk_conent) or (context_expand in doc.metadata and not doc.metadata[context_expand]):# 匹配出的文本如果不需要扩展上下文则执行如下代码if not isinstance(doc, Document):raise ValueError(fCould not find document for id {_id}, got {doc})doc.metadata[score] int(scores[0][j])docs.append(doc)continue# 其实存的都是indexid_set.add(i)docs_len len(doc.page_content)# 跟外部变量定义的k重名了烂# 一个知识库是分句后得到的一句话i是当前知识库在总知识库中的位置store_len是总知识库大小# 所以k说的是扩充上下文时最多能跨多少个知识库for k in range(1, max(i, store_len - i)):break_flag Falseif context_expand_method in doc.metadata and doc.metadata[context_expand_method] forward:expand_range [i k]elif context_expand_method in doc.metadata and doc.metadata[context_expand_method] backward:expand_range [i - k]else:# i4922, k1 → [4923, 4921]expand_range [i k, i - k]for l in expand_range:# 确保扩展上下文时不会造成重复if l not in id_set and 0 l len(self.index_to_docstore_id):_id0 self.index_to_docstore_id[l]doc0 self.docstore.search(_id0)# 如果当前字数大于250或者是知识库跨了文件扩充上下文过程终止# 这一句有些问题有一端跨文件就终止应该是两端同时跨才终止才对if docs_len len(doc0.page_content) self.chunk_size or doc0.metadata[source] ! \doc.metadata[source]:break_flag Truebreakelif doc0.metadata[source] doc.metadata[source]:docs_len len(doc0.page_content)id_set.add(l)rearrange_id_list Trueif break_flag:break# 如果没有扩展上下文不需要或是不能if (not self.chunk_conent) or (not rearrange_id_list):return docsif len(id_set) 0 and self.score_threshold 0:return []id_list sorted(list(id_set))# 连续必然属于同一文档但不连续也可能在同一文档# 返回二级列表第一级是连续的index列表第二级是具体indexid_lists self.seperate_list(id_list)for id_seq in id_lists:for id in id_seq:if id id_seq[0]:_id self.index_to_docstore_id[id]# doc self.docstore.search(_id)doc copy.deepcopy(self.docstore.search(_id))else:_id0 self.index_to_docstore_id[id]doc0 self.docstore.search(_id0)doc.page_content doc0.page_contentif not isinstance(doc, Document):raise ValueError(fCould not find document for id {_id}, got {doc})# indices为相关文件的索引# 因为可能会将多个连续的id合并因此需要将同一seq内所有位于top-k的知识库的分数取最小值作为seq对应的分数doc_score min([scores[0][id] for id in [indices[0].tolist().index(i) for i in id_seq if i in indices[0]]])doc.metadata[score] int(doc_score)docs.append(doc)# 注意这里docs没有按相似度排序可以自行加个sortreturn docsprompt生成local_doc_qa.py def get_knowledge_based_answer(self, query, vs_path, chat_history[], streaming: bool STREAMING):related_docs_with_score vector_store.similarity_search_with_score(query, kself.top_k)torch_gc()if len(related_docs_with_score) 0:prompt generate_prompt(related_docs_with_score, query)else:prompt queryanswer_result_stream_result self.llm_model_chain({prompt: prompt, history: chat_history, streaming: streaming})def generate_prompt(related_docs: List[str],query: str,prompt_template: str PROMPT_TEMPLATE, ) - str:context \n.join([doc.page_content for doc in related_docs])prompt prompt_template.replace({question}, query).replace({context}, context)return prompt对话轮数 其实就是要存多少历史记录如果为0的话就是在执行当前对话时不考虑历史问答 模型内部调用时使用以chatglm为例chatglm_llm.py def _generate_answer(self,inputs: Dict[str, Any],run_manager: Optional[CallbackManagerForChainRun] None,generate_with_callback: AnswerResultStream None) - None:history inputs[self.history_key]streaming inputs[self.streaming_key]prompt inputs[self.prompt_key]print(f__call:{prompt})# Create the StoppingCriteriaList with the stopping stringsstopping_criteria_list transformers.StoppingCriteriaList()# 定义模型stopping_criteria 队列在每次响应时将 torch.LongTensor, torch.FloatTensor同步到AnswerResultlistenerQueue AnswerResultQueueSentinelTokenListenerQueue()stopping_criteria_list.append(listenerQueue)if streaming:history [[]]for inum, (stream_resp, _) in enumerate(self.checkPoint.model.stream_chat(self.checkPoint.tokenizer,prompt,# 为0时history返回[]historyhistory[-self.history_len:-1] if self.history_len 0 else [],max_lengthself.max_token,temperatureself.temperature,top_pself.top_p,top_kself.top_k,stopping_criteriastopping_criteria_list)):向量匹配 top k 虽然放在了模型配置那一页但实际上还是用来控制上下文关联里面的内容条数k的不知道为什么写了两遍。。。 控制生成质量的参数 这些参数没有在前端显式地给出而是写死在了模型定义里 模型定义以chatglm为例chatglm_llm.py class ChatGLMLLMChain(BaseAnswer, Chain, ABC):max_token: int 10000temperature: float 0.01# 相关度top_p 0.4# 候选词数量top_k 10checkPoint: LoaderCheckPoint None# history []history_len: int 10参数设置心得 score_threshold和k设太小会找不到问题对应的原文件太大找到一堆不相关的chunk_size设太小不能在原文件里找到问题对应的原文太大无法有效归纳出答案temperature和top_p默认值下生成的答案基本固定但也很死板过大的temperature导致回答的事实不稳定过大的top_p导致回答的语言风格不稳定调整top_k没发现结果有什么变化
http://www.dnsts.com.cn/news/148806.html

相关文章:

  • 建设网站的文案范文鲜花网站数据库建设分析
  • 手机网站建设行业现状wordpress下载站源码
  • 做交易网站什么开发语言天长网站开发
  • 做冷库用什么网站发帖子好自贡网站建设哪家好
  • 儿童教育网站源码网页制作公司 软件
  • 设计商业网站应该做到什么哔哩哔哩网页版登录入口
  • 自学做视频网站重庆网站建设公司魁网
  • 做网站兴趣爱好网站功能有哪些
  • 分析可口可乐网站建设的目的手机网站建设找哪家好
  • 响应式个人网站psd成都论坛网站建设
  • 郑州做网站优化运营商网络推广工作任务
  • 江门网站建设开发福建漳州网站建设公司
  • 国家建设部网站官网证件查询wordpress mysql优化
  • 免费网站空间注册中国万网网站建设过程
  • 做网站先做首页免费网站排名优化在线
  • 快手刷赞网站推广软件wordpress get_post
  • 做设计找素材的 网站有哪些软文投放平台有哪些?
  • 自做购物网站多少钱怎么建设一个手机网站
  • gta5 网站正在建设中如何建立一个免费网站
  • 成都中小企业申请网站西安政务服务网
  • 济南网站建设cn unasp网站建设 文献
  • 网站建设与组织管理把wordpress变成图床
  • go生物网站做蛋白定位网站做等报定级工作要多久
  • 网站的功能包括哪些wordpress类似的前端
  • 织梦网站后台进不去织梦网站修改教程视频
  • 山东网站建设企业一个人做的网站做什么好
  • 国外电商网站如何做icp备案网站后台英语
  • 国外做3d模型的网站网站管理登录系统
  • wordpress4.9.4中文版新野seo公司
  • 网站建设的架构自媒体哪里培训