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

seo建站淘客比较大网站建设公司

seo建站淘客,比较大网站建设公司,高端网站推广,哈尔滨网站制作最新招聘信息一、什么是向量 向量是一种有大小和方向的数学对象。它可以表示为从一个点到另一个点的有向线段。例如#xff0c;二维空间中的向量可以表示为 (#x1d465;,#x1d466;) #xff0c;表示从原点 (0,0)到点 (#x1d465;,#x1d466;)的有向线段。 1.1、文本向量 1…一、什么是向量 向量是一种有大小和方向的数学对象。它可以表示为从一个点到另一个点的有向线段。例如二维空间中的向量可以表示为 (,) 表示从原点 (0,0)到点 (,)的有向线段。 1.1、文本向量 1、将文本转成一组 维浮点数即文本向量又叫 Embeddings。 2、向量之间可以计算距离距离远近对应语义相似度大小。 1.2、向量相似度计算 相似度计算过程中欧式距离越小越好余弦距离越大越好。 import numpy as np from numpy import dot from numpy.linalg import normfrom openai import OpenAI import os # 加载环境变量 client OpenAI(api_key模型key,base_url模型的base_url) def cos_sim(a, b):余弦距离 -- 越大越相似return dot(a, b)/(norm(a)*norm(b)) def l2(a, b):欧氏距离 -- 越小越相似x np.asarray(a)-np.asarray(b)return norm(x) def get_embeddings(texts, modeltext-embedding-3-large, dimensionsNone):封装 OpenAI 的 Embedding 模型接口if model text-embedding-ada-002:dimensions Noneif dimensions:data client.embeddings.create(inputtexts, modelmodel, dimensionsdimensions).dataelse:data client.embeddings.create(inputtexts, modelmodel).datareturn [x.embedding for x in data] test_query [测试文本] vec get_embeddings(test_query)[0]# query 国际争端 # 且能支持跨语言 query global conflictsdocuments [联合国就苏丹达尔富尔地区大规模暴力事件发出警告,土耳其、芬兰、瑞典与北约代表将继续就瑞典“入约”问题进行谈判,日本岐阜市陆上自卫队射击场内发生枪击事件 3人受伤,国家游泳中心水立方恢复游泳、嬉水乐园等水上项目运营,我国首次在空间站开展舱外辐射生物学暴露实验, ]query_vec get_embeddings([query])[0]doc_vecs get_embeddings(documents)print(Query与自己的余弦距离: {:.2f}.format(cos_sim(query_vec, query_vec))) print(Query与Documents的余弦距离:) for vec in doc_vecs:print(cos_sim(query_vec, vec))print(Query与自己的欧氏距离: {:.2f}.format(l2(query_vec, query_vec))) print(Query与Documents的欧氏距离:) for vec in doc_vecs:print(l2(query_vec, vec))1.3、 Embedding 模型 2024 年 1 月 25 日OpenAI 新发布了两个 Embedding 模型text-embedding-3-large和text-embedding-3-small。其最大特点是支持自定义的缩短向量维度从而在几乎不影响最终效果的情况下降低向量检索与相似度计算的复杂度。通俗的说越大越准、越小越快。 model text-embedding-3-large dimensions 128query 国际争端# 且能支持跨语言 # query global conflictsdocuments [联合国就苏丹达尔富尔地区大规模暴力事件发出警告,土耳其、芬兰、瑞典与北约代表将继续就瑞典“入约”问题进行谈判,日本岐阜市陆上自卫队射击场内发生枪击事件 3人受伤,国家游泳中心水立方恢复游泳、嬉水乐园等水上项目运营,我国首次在空间站开展舱外辐射生物学暴露实验, ]query_vec get_embeddings([query], modelmodel, dimensionsdimensions)[0] doc_vecs get_embeddings(documents, modelmodel, dimensionsdimensions)print(向量维度: {}.format(len(query_vec)))print()print(Query与Documents的余弦距离:) for vec in doc_vecs:print(cos_sim(query_vec, vec))print()print(Query与Documents的欧氏距离:) for vec in doc_vecs:print(l2(query_vec, vec))二、向量数据库 向量数据库是专门问向量检索设计的中间件。 # !pip install chromadb from pdfminer.high_level import extract_pages from pdfminer.layout import LTTextContainer import chromadb from chromadb.config import Settingsdef extract_text_from_pdf(filename, page_numbersNone, min_line_length5):从 PDF 文件中按指定页码提取文字paragraphs []buffer full_text # 提取全部文本for i, page_layout in enumerate(extract_pages(filename)):# 如果指定了页码范围跳过范围外的页if page_numbers is not None and i not in page_numbers:continuefor element in page_layout:if isinstance(element, LTTextContainer):full_text element.get_text() \n# 按空行分隔将文本重新组织成段落lines full_text.split(\n)for text in lines:if len(text) min_line_length:buffer ( text) if not text.endswith(-) else text.strip(-)elif buffer:paragraphs.append(buffer)buffer if buffer:paragraphs.append(buffer)return paragraphsclass MyVectorDBConnector:def __init__(self, collection_name, embedding_fn):chroma_client chromadb.Client(Settings(allow_resetTrue)) # chroma_client chromadb.HttpClient(hostlocalhost, port8000)# 为了演示实际不需要每次 reset() # chroma_client.reset()# 创建一个 collectionself.collection chroma_client.get_or_create_collection(namecollection_name)self.embedding_fn embedding_fndef add_documents(self, documents):向 collection 中添加文档与向量self.collection.add(embeddingsself.embedding_fn(documents), # 每个文档的向量documentsdocuments, # 文档的原文ids[fid{i} for i in range(len(documents))] # 每个文档的 id)def search(self, query, top_n):检索向量数据库results self.collection.query(query_embeddingsself.embedding_fn([query]),n_resultstop_n)return results# 创建一个向量数据库对象 vector_db MyVectorDBConnector(demo, get_embeddings) # 向向量数据库中添加文档 vector_db.add_documents(paragraphs)user_query Llama 2有多少参数 results vector_db.search(user_query, 2)for para in results[documents][0]:print(para\n)澄清几个概念 1、向量数据库的意义是快速的检索 2、向量数据库本身不生成向量向量是由Embedding 模型产生的 3、向量数据库与传统的关系型数据库是互补的不是替代关系在实际应用中根据实际需求经常同时使用。 2.1、主流向量数据库 - FAISS: Meta 开源的向量检索引擎 https://github.com/facebookresearch/faiss - Pinecone: 商用向量数据库只有云服务 https://www.pinecone.io/ - Milvus: 开源向量数据库同时有云服务 https://milvus.io/ - Weaviate: 开源向量数据库同时有云服务 https://weaviate.io/ - Qdrant: 开源向量数据库同时有云服务 https://qdrant.tech/ - PGVector: Postgres 的开源向量检索引擎 https://github.com/pgvector/pgvector - RediSearch: Redis 的开源向量检索引擎 https://github.com/RediSearch/RediSearch - ElasticSearch 也支持向量检索 https://www.elastic.co/enterprise-search/vector-search2.2、基于向量检索的RAG class RAG_Bot:def __init__(self, vector_db, llm_api, n_results2):self.vector_db vector_dbself.llm_api llm_apiself.n_results n_resultsdef chat(self, user_query):# 1. 检索search_results self.vector_db.search(user_query, self.n_results)# 2. 构建 Promptprompt build_prompt(prompt_template, contextsearch_results[documents][0], queryuser_query)# 3. 调用 LLMresponse self.llm_api(prompt)return response# 创建一个RAG机器人 bot RAG_Bot(vector_db,llm_apiget_completion )user_query llama 2有多少参数?response bot.chat(user_query)print(response)2.3、国产大模型 import json import requests import os# 通过鉴权接口获取 access tokendef get_access_token():使用 AKSK 生成鉴权签名Access Token:return: access_token或是None(如果错误)url https://aip.baidubce.com/oauth/2.0/tokenparams {grant_type: client_credentials,client_id: os.getenv(ERNIE_CLIENT_ID),client_secret: os.getenv(ERNIE_CLIENT_SECRET)}return str(requests.post(url, paramsparams).json().get(access_token))# 调用文心千帆 调用 BGE Embedding 接口def get_embeddings_bge(prompts):url https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/embeddings/bge_large_en?access_token get_access_token()payload json.dumps({input: prompts})headers {Content-Type: application/json}response requests.request(POST, url, headersheaders, datapayload).json()data response[data]return [x[embedding] for x in data]# 调用文心4.0对话接口 def get_completion_ernie(prompt):url https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions_pro?access_token get_access_token()payload json.dumps({messages: [{role: user,content: prompt}]})headers {Content-Type: application/json}response requests.request(POST, url, headersheaders, datapayload).json()return response[result]# 创建一个向量数据库对象 new_vector_db MyVectorDBConnector(demo_ernie,embedding_fnget_embeddings_bge ) # 向向量数据库中添加文档 new_vector_db.add_documents(paragraphs)# 创建一个RAG机器人 new_bot RAG_Bot(new_vector_db,llm_apiget_completion_ernie )user_query how many parameters does llama 2 have? response new_bot.chat(user_query) print(response)
http://www.dnsts.com.cn/news/39784.html

相关文章:

  • 自主建站网站做网站哪些好
  • 优质手机网站建设哪家好保定网站建设多少钱
  • 做家教什么网站万网域名注册官网
  • 娱乐建网站企业网站备案 淘宝客
  • 简单建站wordpress 图片本地
  • 自媒体平台企业网站怎么设置下载源码就能建网站吗
  • 正能量晚上看的网站2021如何做网站调研
  • 做软装设计能用到的网站有哪些抚顺您做煮火锅网站
  • 启东做网站的网络公司有哪些东莞市seo网络推广平台
  • 做代练的网站医药cms是什么意思
  • 免费的虚拟主机空间seo优化公司信
  • 任何用c语言做网站免备案虚拟主机哪家好
  • 个人音乐分享网站源码郑州站
  • 苏州网站建设介绍手机网页禁止访问解除
  • 人人车网站建设费用wordpress排版乱 了
  • 沈阳网站制作方法电子商务公司怎么样
  • 自己电脑做网站好吗网站需要具备条件
  • 网站建设个人简历表达华为网上商城手机官网
  • 做旅游宣传网站的流程图公司门户网站模板
  • 网站支持ipv6怎么做android 开发wordpress
  • 设计网站流程包括哪些郑州平面设计公司
  • 区网站开发语言网页设计与制作心得体会1000
  • php网站开发案例教程旅游的网站怎么做
  • 一个网站的设计周期m3型虚拟主机 wordpress
  • 擦彩网站开发网站备案幕布下载
  • 互动网站建设多少钱cms网站栏目介绍
  • 外贸网站建站i网站建设客户调查需求表
  • 想象力做网站郑州专业网站制作费用报价
  • 四川省铁路建设有限公司网站加强医院网站建设
  • 求一个好看的网站网站开发学什么