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

山西建设厅八大员查询网站企业文化包括哪些方面内容

山西建设厅八大员查询网站,企业文化包括哪些方面内容,揭阳模板网站建站,网站 成功案例检索原理 BM25Retriever类是一个基于BM25算法设计的检索器#xff0c;它主要用于从一组文档或节点中检索出与查询最相关的文档或节点。这个类的设计目的是为了提高文本检索的效率和准确性#xff0c;尤其是在处理大量文本数据时。 BM25#xff08;Best Matching 25#x…检索原理 BM25Retriever类是一个基于BM25算法设计的检索器它主要用于从一组文档或节点中检索出与查询最相关的文档或节点。这个类的设计目的是为了提高文本检索的效率和准确性尤其是在处理大量文本数据时。 BM25Best Matching 25算法是一种在信息检索领域广泛应用的经典算法它是对传统的TF-IDFTerm Frequency-Inverse Document Frequency算法的一种改进。BM25算法的核心思想是利用词频TF和逆文档频率IDF来衡量文档与查询之间的相关性同时考虑到文档长度信息对相关性的影响。以下是对BM25算法的一些关键特性和原理的介绍 原理 BM25算法基于这样一个假设对于一个特定的查询项它在相关文档中出现的频率应该高于在非相关文档中的频率。该算法通过结合词项频率TF和文档频率DF来计算文档的得分。具体来说BM25算法包括以下几个组成部分 词项频率TF词项频率是指一个词项在文档中出现的次数。BM25对传统的TF计算方法进行了调整引入了饱和度和长度归一化以防止长文档由于包含更多词项而获得不公平的高评分。 逆文档频率IDF逆文档频率是衡量词项稀有程度的一个指标。它基于整个文档集合来计算用来降低常见词项的权重并提升罕见词项的权重。 文档长度信息BM25算法引入了文档长度信息以进一步调整相关性的计算。这样可以避免因为文档长度不同而导致的相关性偏差。 计算公式 BM25算法的计算公式可以表述为 其中 ( tf_{t,d} ) 是词项 ( t ) 在文档 ( d ) 中的词频( IDF(t) ) 是词项 ( t ) 的逆文档频率( k_1 ) 和 ( b ) 是自由参数用于调节计算过程中的影响( |d| ) 是文档 ( d ) 的长度( avgdl ) 是文档集合中所有文档长度的平均值。 改进与变种 除了标准的BM25算法之外还有几种重要的变种如BM25F和BM25L BM25F这是BM25的一个重要扩展可以在多个文档域上进行计算。BM25L该变种考虑了文档长度对得分的影响通过引入文档长度规范化项来平衡不同长度的文档。 应用场景 BM25算法因其在处理词频和相关性之间非线性关系上的优势被广泛应用于搜索引擎和相关领域。在实际应用中如Elasticsearch和Lucene这样的全文搜索引擎默认使用的就是Okapi BM25算法。 总结来说BM25算法是一种强大而灵活的信息检索算法它通过对TF-IDF模型的改进提高了搜索结果的相关性同时通过引入文档长度因子等改进措施增强了算法的实用性。 该检索技术的优缺点 LlamaIndex是一个基于语言模型LLM的开源信息检索系统它提供了高效的数据索引和查询功能适用于大规模文本数据集的快速检索。其中BM25Retriever是LlamaIndex提供的一个检索器它基于BM25算法这是一种广泛使用的信息检索排序函数专门用于文档检索尤其擅长处理长文档和短查询。下面将详细探讨BM25Retriever在LlamaIndex中的优缺点。 优点 优化的TF-IDF: BM25Retriever是基于TF-IDF词频-逆文档频率的改进版本它解决了标准TF-IDF方法的一些局限性如长文档可能得到过高评分的问题。BM25通过调整参数k1和b来考虑文档长度的影响从而使得检索结果更加准确。 文档长度的考虑: BM25Retriever的一个关键特性是它考虑了文档长度对评分的影响。对于长文档BM25Retriever会调整评分确保不会因为文档较长而产生不公平的优势这有助于提高检索结果的相关性。 灵活性: BM25Retriever可以很容易地与其他检索技术相结合例如与向量检索混合使用形成一种称为混合检索的技术。这种组合可以利用各自的优势提供更加全面的检索服务。 缺点 中文支持问题: 默认情况下BM25Retriever的tokenizer可能不支持中文处理这意味着在处理中文文本时需要额外的步骤或定制的解决方案如使用jieba分词器来处理中文文本。 计算资源需求: 尽管BM25Retriever在文档检索方面表现优秀但它需要进行大量的计算来确定文档与查询的相关性得分尤其是在大型数据集中这可能会导致较高的计算资源需求。 参数调优: BM25算法依赖于一些参数如k1, b等这些参数可能需要根据具体的应用场景进行调优才能达到最佳性能。如果不正确地设置这些参数可能会影响检索结果的质量。 综上所述BM25Retriever在LlamaIndex中提供了一种强大的检索机制尤其适用于需要精确排序结果的应用场景。然而在使用时需要注意其对于特定语言的支持情况以及可能产生的计算开销等问题。在实际应用中根据具体的业务需求选择合适的检索器并且合理地调整参数以优化性能是非常重要的。 LlamaIndex官方地址 https://docs.llamaindex.ai/en/stable/ 快速上手 创建一个文件例如“chainlit_chat” mkdir chainlit_chat进入 chainlit_chat文件夹下执行命令创建python 虚拟环境空间(需要提前安装好python sdk。 Chainlit 需要python3.8。,具体操作由于文章长度问题就不在叙述自行百度)命令如下 python -m venv .venv这一步是避免python第三方库冲突省事版可以跳过.venv是创建的虚拟空间文件夹可以自定义 接下来激活你创建虚拟空间命令如下 #linux or mac source .venv/bin/activate #windows .venv\Scripts\activate在项目根目录下创建requirements.txt内容如下 chainlit llama-index-core llama-index-llms-dashscope llama-index-embeddings-dashscope llama-index-retrievers-bm25~0.3.0执行以下命令安装依赖 pip install -r .\requirements.txt安装后项目根目录下会多出.chainlit 和.files文件夹和chainlit.md文件 代码创建 只使用通义千问的DashScope模型服务灵积的接口 在项目根目录下创建.env环境变量配置如下 DASHSCOPE_API_KEYsk-api_keyDASHSCOPE_API_KEY 是阿里dashscope的服务的APIkey代码中使用DashScope的sdk实现所以不需要配置base_url。默认就是阿里的base_url。阿里模型接口地址 https://dashscope.console.aliyun.com/model 在项目根目录下创建app.py文件代码如下 import os import timeimport chainlit as cl from llama_index.core.query_engine import RetrieverQueryEngine from llama_index.retrievers.bm25 import BM25Retriever from llama_index.core import (Settings,VectorStoreIndex,SimpleDirectoryReader, load_index_from_storage, StorageContext, ) from llama_index.core.node_parser import SentenceSplitter from llama_index.embeddings.dashscope import DashScopeEmbedding, DashScopeTextEmbeddingModels, \DashScopeTextEmbeddingType from llama_index.llms.dashscope import DashScope, DashScopeGenerationModelsSettings.llm DashScope(model_nameDashScopeGenerationModels.QWEN_TURBO, api_keyos.environ[DASHSCOPE_API_KEY], max_tokens512 ) Settings.embed_model DashScopeEmbedding(model_nameDashScopeTextEmbeddingModels.TEXT_EMBEDDING_V2,text_typeDashScopeTextEmbeddingType.TEXT_TYPE_DOCUMENT, ) Settings.node_parser SentenceSplitter(chunk_size512, chunk_overlap20) Settings.num_output 512 Settings.context_window 6000cl.cache def get_vector_store_index():storage_dir ./storage_bm25_512if os.path.exists(storage_dir):storage_context StorageContext.from_defaults(persist_dirstorage_dir)index load_index_from_storage(storage_context)else:documents SimpleDirectoryReader(./data_file).load_data(show_progressTrue)node_parser SentenceSplitter.from_defaults(chunk_size512, chunk_overlap20)nodes node_parser.get_nodes_from_documents(documents)print(fnodes: {len(nodes)})index VectorStoreIndex(nodesnodes)index.storage_context.persist(persist_dirstorage_dir)return indexvector_store_index get_vector_store_index()cl.on_chat_start async def start():await cl.Message(authorAssistant, content你好! 我是泰山AI智能助手. 有什么可以帮助你的吗?).send()cl.on_message async def main(message: cl.Message):start_time time.time()retriever BM25Retriever.from_defaults(docstorevector_store_index.docstore, similarity_top_k5)query_engine RetrieverQueryEngine.from_args(retriever, streamingTrue)msg cl.Message(content, authorAssistant)res await query_engine.aquery(message.content)async for token in res.response_gen:await msg.stream_token(token)print(f代码执行时间: {time.time() - start_time} 秒)source_names []for idx, node_with_score in enumerate(res.source_nodes):node node_with_score.nodesource_name fsource_{idx}source_names.append(source_name)msg.elements.append(cl.Text(contentnode.get_text(), namesource_name, displayside))await msg.stream_token(f\n\n **数据来源**: {, .join(source_names)})await msg.send()代码中的persist_dirstorage_dir 不设置的默认是 ./storage.代码中chunk_size是将长文档分割的文本块的大小chunk_overlap 是和上下文本块的重合文本的大小。代码中 node_parser HierarchicalNodeParser.from_defaults( node_parser_idsnode_parser_ids, node_parser_mapnode_parser_map ) 可以简写为 node_parser HierarchicalNodeParser.from_defaults() 会按照 [2048,512,128]三种层次分割经过我测试不使用默认的效果会更好similarity_top_k5 返回5条最相关的数据 代码解读 这段代码是一个使用ChainLit框架构建的聊天机器人应用它集成了向量数据库索引和检索功能以从文档中检索信息并回答用户的问题。下面是代码的逐部分解释 导入模块 os 和 time 是标准库模块分别用于操作系统相关功能和计时功能。chainlit as cl 用于创建交互式的Web应用程序。llama_index 是一个用于构建索引、检索器和查询引擎的库帮助处理文本数据并进行问答系统开发。 设置环境变量 设置了DashScope的LLMLanguage Model和Embedding模型并指定了使用的模型类型以及API密钥位置。这些设置是根据环境变量DASHSCOPE_API_KEY来获取的。 向量存储索引函数 (get_vector_store_index) 这个函数首先检查是否存在一个持久化的存储目录。如果存在则加载已有的索引如果不存在则读取指定目录下的文档将其分割成节点创建向量存储索引并将其持久化到指定目录。 聊天开始时的事件处理器 (start) 当聊天会话开始时发送一条消息给用户作为问候。 接收消息时的事件处理器 (main) 当收到用户的输入消息时使用BM25检索器来检索最相关的文档并通过RetrieverQueryEngine生成答案。使用异步生成器流式传输响应给用户并记录每个源文档的信息以便显示数据来源。 这段代码展示了一个基于文档检索的问答系统的实现方式利用了现代语言模型的能力来生成高质量的回答。注意在实际部署时需要确保环境变量DASHSCOPE_API_KEY已经正确设置并且指定的数据文件夹路径是正确的。此外还需确保所有依赖项已安装并且与ChainLit框架兼容。 在项目根目录下创建data_file文件夹 将你的文件放到data_file文件夹下。 llama_index 库支持多种文件格式的加载以便从中提取文本内容用于索引构建和后续的信息检索或问答任务。以下是一些常见的文件格式支持 文本文件 (.txt)简单的纯文本文件。PDF 文件 (.pdf)便携文档格式广泛用于书籍、报告等文档。Microsoft Word 文档 (.doc, .docx)Word 文档格式。CSV 文件 (.csv)逗号分隔值文件常用于表格数据。HTML 文件 (.html, .htm)超文本标记语言文件。Markdown 文件 (.md, .markdown)轻量级标记语言。JSON 文件 (.json)JavaScript 对象表示法常用于数据交换。EPUB 文件 (.epub)电子书格式。PPTX 文件 (.pptx)PowerPoint 演示文稿。 除了上述文件格式外llama_index 可能还支持其他一些格式具体取决于其内部依赖库的支持情况。例如它可能通过第三方库支持解析像 .xls, .xlsx 这样的 Excel 文件。 为了加载这些不同类型的文件llama_index 提供了多个不同的读取器readers如 SimpleDirectoryReader 可以用来加载一个目录中的多个文件而针对特定文件格式如 PDF 或 Word 文档则有专门的读取器类。 例如如果你有一个包含多种文件格式的目录你可以使用 SimpleDirectoryReader 来加载它们。如果你只处理一种类型的文件比如 PDF 文件你可以选择使用更具体的读取器比如 PDFReader。 运行应用程序 要启动 Chainlit 应用程序请打开终端并导航到包含的目录app.py。然后运行以下命令 chainlit run app.py -w 该-w标志告知 Chainlit 启用自动重新加载因此您无需在每次更改应用程序时重新启动服务器。您的聊天机器人 UI 现在应该可以通过http://localhost:8000访问。自定义端口可以追加--port 80 启动后界面如下 BM25Retriever索引器还可以与向量检索器等其他索引器利用QueryFusionRetriever类将其融合查询。 后续会出更多关于LlamaIndex高级检查的技术文章教程感兴趣的朋友可以持续关注我的动态 相关文章推荐 《Chainlit快速实现AI对话应用的界面定制化教程》 《Chainlit接入FastGpt接口快速实现自定义用户聊天界面》 《使用 Xinference 部署本地模型》 《Fastgpt接入Whisper本地模型实现语音输入》 《Fastgpt部署和接入使用重排模型bge-reranker》 《Fastgpt部署接入 M3E和chatglm2-m3e文本向量模型》 《Fastgpt 无法启动或启动后无法正常使用的讨论启动失败、用户未注册等问题这里》 《vllm推理服务兼容openai服务API》 《vLLM模型推理引擎参数大全》 《解决vllm推理框架内在开启多显卡时报错问题》 《Ollama 在本地快速部署大型语言模型可进行定制并创建属于您自己的模型》
http://www.yingshimen.cn/news/141073/

相关文章:

  • 静态网站 模板国内最大的开源网站
  • 网站开发调研方案四川建站模板网站公司
  • 大淘客做网站南宁网站推广方案如何做
  • 外贸接单网站排名榜现在网站开发的前端语言
  • 中国建设银行官网站安装k宝舟山网站制作公司
  • 怎么建立本地网站做一个官方网站多少钱
  • 大学网站建设包括哪些课程网站开发和前端是一样吗
  • 个人网站 推荐wordpress 注册登陆插件
  • 频繁从一个网站链接到另一个网站会影响百度收录么网站seo方法
  • 做网站需要软件wordpress新建功能页面
  • 如何开发电子商务网站公司外文网站制作
  • 五莲做网站做美食软件的视频网站
  • 石家庄企业如何建网站西青网站开发
  • 山东省住房城乡建设厅查询网站首页韩国最牛的设计网站大全
  • 网站建设需求有什么用东莞商城网站建设
  • 江门模板建站哪家好网站备案是先做网站还是做完了备案
  • 能利用双股铜芯电话线做网站吗公众号简介有趣的文案
  • dede网站搬家后为什么都没有内容呢成都市建设网站
  • 房地产网站制作教程仙桃网站网站建设
  • php开发手机网站网络建站网网络推广
  • 石岩附近做网站公司wordpress c值播放
  • 网站克隆好后该怎么做wordpress邮件订阅功能
  • 浏览器打开自己做的网站汉阳网站推广
  • 自己制作网站的方法网视易网站建设
  • 福州企业建站程序seo关键词优化软件怎么样
  • golang 网站开发 开源个人网页代码模板
  • 网站建设玖金手指花总如何建立网站建设
  • 钟表 东莞网站建设首页重庆网站建设
  • 网站开发项目流程图网站开发的前景
  • 博罗做网站我的世界图片制作器