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

上海松江做网站公司北京定制网站建设

上海松江做网站公司,北京定制网站建设,中国建设银行app官网,跨境电商免费开店的有哪些本笔记本演示了如何#xff1a; 将 OpenAI Wikipedia 向量数据集索引到 Elasticsearch 中使用 Streamlit 构建一个简单的 Gen AI 应用程序#xff0c;该应用程序使用 Elasticsearch 检索上下文并使用 OpenAI 制定答案 安装 安装 Elasticsearch 及 Kibana 如果你还没有安装好…本笔记本演示了如何 将 OpenAI Wikipedia 向量数据集索引到 Elasticsearch 中使用 Streamlit 构建一个简单的 Gen AI 应用程序该应用程序使用 Elasticsearch 检索上下文并使用 OpenAI 制定答案 安装 安装 Elasticsearch 及 Kibana 如果你还没有安装好自己的 Elasticsearch 及 Kibana那么请参考一下的文章来进行安装 如何在 LinuxMacOS 及 Windows 上进行安装 Elasticsearch Kibana如何在 LinuxMacOS 及 Windows 上安装 Elastic 栈中的 Kibana 在安装的时候请选择 Elastic Stack 8.x 进行安装。在安装的时候我们可以看到如下的安装信息 环境变量 在启动 Jupyter 之前我们设置如下的环境变量 export ES_USERelastic export ES_PASSWORDxnLj56lTrH98Lf_6n76y export ES_ENDPOINTlocalhost export OPENAI_API_KEYYourOpenAiKey请在上面修改相应的变量的值。这个需要在启动 jupyter 之前运行。 拷贝 Elasticsearch 证书 我们把 Elasticsearch 的证书拷贝到当前的目录下 $ pwd /Users/liuxg/python/elser $ cp ~/elastic/elasticsearch-8.12.0/config/certs/http_ca.crt . $ ls http_ca.crt http_ca.crt 安装 Python 依赖包 python3 -m pip install -qU openai pandas1.5.3 wget elasticsearch streamlit tqdm load_dotenv 准备数据 我们可以使用如下的命令来下载数据 wget https://cdn.openai.com/API/examples/data/vector_database_wikipedia_articles_embedded.zip $ pwd /Users/liuxg/python/elser $ wget https://cdn.openai.com/API/examples/data/vector_database_wikipedia_articles_embedded.zip --2024-02-09 12:06:36-- https://cdn.openai.com/API/examples/data/vector_database_wikipedia_articles_embedded.zip Resolving cdn.openai.com (cdn.openai.com)... 13.107.213.69 Connecting to cdn.openai.com (cdn.openai.com)|13.107.213.69|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 698933052 (667M) [application/zip] Saving to: ‘vector_database_wikipedia_articles_embedded.zip’vector_database_wikipedi 100%[] 666.55M 1.73MB/s in 3m 2s 2024-02-09 12:09:40 (3.66 MB/s) - ‘vector_database_wikipedia_articles_embedded.zip’ saved [698933052/698933052] 创建应用并展示 我们在当前的目录下打入如下的命令来创建 notebook $ pwd /Users/liuxg/python/elser $ jupyter notebook 导入包及连接到 Elasticsearch import os from getpass import getpass from elasticsearch import Elasticsearch, helpers import wget, zipfile, pandas as pd, json, openai import streamlit as st from tqdm.notebook import tqdm from dotenv import load_dotenvload_dotenv()openai_api_keyos.getenv(OPENAI_API_KEY) elastic_useros.getenv(ES_USER) elastic_passwordos.getenv(ES_PASSWORD) elastic_endpointos.getenv(ES_ENDPOINT)url fhttps://{elastic_user}:{elastic_password}{elastic_endpoint}:9200 client Elasticsearch(url, ca_certs ./http_ca.crt, verify_certs True)print(client.info()) 配置 OpenAI 连接 我们的示例将使用 OpenAI 来制定答案因此请在此处提供有效的 OpenAI Api 密钥。 你可以按照本指南检索你的 API 密钥。然后测试与OpenAI的连接检查该笔记本使用的型号是否可用。 from openai import OpenAIopenai OpenAI() openai.models.retrieve(text-embedding-ada-002) $ pip3 list | grep openai langchain-openai 0.0.5 openai 1.12.0 下载数据集 with zipfile.ZipFile(vector_database_wikipedia_articles_embedded.zip, r) as zip_ref:zip_ref.extractall(data) 运行上面的代码后我们可以在如下地址找到解压缩的文件 vector_database_wikipedia_articles_embedded.csv $ pwd /Users/liuxg/python/elser $ ls ./data __MACOSX vector_database_wikipedia_articles_embedded.csv paul_graham 将 CSV 文件读入 Pandas DataFrame 接下来我们使用 Pandas 库将解压的 CSV 文件读入 DataFrame。 此步骤可以更轻松地将数据批量索引到 Elasticsearch 中。 wikipedia_dataframe pd.read_csv(data/vector_database_wikipedia_articles_embedded.csv) 使用映射创建索引 现在我们需要使用必要的映射创建一个 Elasticsearch 索引。 这将使我们能够将数据索引到 Elasticsearch 中。 我们对 title_vector 和 content_vector 字段使用密集向量字段类型。 这是一种特殊的字段类型允许我们在 Elasticsearch 中存储密集向量。 稍后我们需要以密集向量字段为目标进行 kNN 搜索。 index_mapping {properties: {title_vector: {type: dense_vector,dims: 1536,index: true,similarity: cosine},content_vector: {type: dense_vector,dims: 1536,index: true,similarity: cosine},text: {type: text},title: {type: text},url: { type: keyword},vector_id: {type: long}} } client.indices.create(indexwikipedia_vector_index, mappingsindex_mapping) 请注意 title_vector 及 content_vector 两个字段已经是以向量的形式来存储的。我们不需要额外的工作来对字段进行向量化。 将数据索引到 Elasticsearch 以下函数生成所需的批量操作这些操作可以传递到 Elasticsearch 的 bulk API因此我们可以在单个请求中有效地索引多个文档。 对于 DataFrame 中的每一行该函数都会生成一个字典表示要索引的单个文档。 def dataframe_to_bulk_actions(df):for index, row in df.iterrows():yield {_index: wikipedia_vector_index,_id: row[id],_source: {url : row[url],title : row[title],text : row[text],title_vector : json.loads(row[title_vector]),content_vector : json.loads(row[content_vector]),vector_id : row[vector_id]}} 由于数据帧很大我们将以 100 个为一组对数据进行索引。我们使用 Python 客户端的 bulk API 帮助程序将数据索引到 Elasticsearch 中。 total_documents len(wikipedia_dataframe)progress_bar tqdm(totaltotal_documents, unitdocuments) success_count 0for ok, info in helpers.streaming_bulk(client, actionsdataframe_to_bulk_actions(wikipedia_dataframe), raise_on_errorFalse, chunk_size100):if ok:success_count 1else:print(fUnable to index {info[index][_id]}: {info[index][error]})progress_bar.update(1)progress_bar.set_postfix(successsuccess_count) 等上面的代码运行完毕后我们可以在 Kibana 中进行查看 使用 Streamlit 构建应用程序 在下一节中 你将使用 Streamlit 构建一个简单的界面。 该应用程序将显示一个简单的搜索栏用户可以在其中提出问题。 Elasticsearch 用于检索与问题匹配的相关文档上下文然后 OpenAI 使用上下文制定答案。 安装依赖项以在运行后访问应用程序。 !npm install localtunnel %%writefile app.pyimport os import streamlit as st import openai from elasticsearch import Elasticsearch from dotenv import load_dotenvfrom openai import OpenAIopenai OpenAI()load_dotenv()openai_api_keyos.getenv(OPENAI_API_KEY) elastic_useros.getenv(ES_USER) elastic_passwordos.getenv(ES_PASSWORD) elastic_endpointos.getenv(ES_ENDPOINT)url fhttps://{elastic_user}:{elastic_password}{elastic_endpoint}:9200 client Elasticsearch(url, ca_certs ./http_ca.crt, verify_certs True)# Define model EMBEDDING_MODEL text-embedding-ada-002def openai_summarize(query, response):context response[hits][hits][0][_source][text]summary openai.chat.completions.create(modelgpt-3.5-turbo,messages[{role: system, content: You are a helpful assistant.},{role: user, content: Answer the following question: query by using the following text: context},])print(summary)return summary.choices[0].message.contentdef search_es(query):# Create embeddingquestion_embedding openai.embeddings.create(inputquery, modelEMBEDDING_MODEL)# Define Elasticsearch queryresponse client.search(index wikipedia_vector_index,knn{field: content_vector,query_vector: question_embedding.data[0].embedding,k: 10,num_candidates: 100})return responsedef main():st.title(Gen AI Application)# Input for user search queryuser_query st.text_input(Enter your question:)if st.button(Search):if user_query:st.write(fSearching for: {user_query})result search_es(user_query)# print(result)openai_summary openai_summarize(user_query, result)st.write(fOpenAI Summary: {openai_summary})# Display search resultsif result[hits][total][value] 0:st.write(Search Results:)for hit in result[hits][hits]:st.write(hit[_source][title])st.write(hit[_source][text])else:st.write(No results found.)if __name__ __main__:main() 运行应用 运行应用程序并检查您的隧道 IP !streamlit run app.py 如果你想把网站供全网其它的电脑访问你可以使用如下的命令 npx localtunnel --port 8501 整个 notebook 的源码可以在地址下载https://github.com/liu-xiao-guo/semantic_search_es/blob/main/openai_rag_streamlit.ipynb
http://www.zqtcl.cn/news/890243/

相关文章:

  • 网站推广广告词大全集网站和网络建设自查报告
  • 电子商务网站建设备案须知自己做的网站服务器在哪里
  • 怎样用wordpress做网站wordpress 首页判断
  • jsp做的网站效果织梦网站程序模板
  • 展示型网站设计公司网盘wordpress
  • 网站建设 保密学服装设计后悔了
  • 网站建设前端和后端网站开发所遵循的
  • 有自己域名的个人网站企业网站建设制作公司
  • 工程行业网站优化网站推广排名
  • 青岛网站建设软件下载广州app网站建设
  • 天津市建设厅官方网站qq电脑版登录
  • 贵阳手机网站建设公司辽源网站建设
  • 淄博网站设计制作wordpress 纯静态首页
  • 规划电子商务网站流程福清建设局网站简介
  • 使用joomla的网站网络营销师资格证有什么用
  • 做经营网站怎么赚钱吗关于做网站的合同
  • 上海手机网站建设哪家好重庆景点
  • 做网站菜单背景图片wordpress伪原创词库
  • 网络维护工程师工资多少聊城哪里做优化网站
  • 网站开发用什么字体查询域名备案
  • 济南品牌网站建设公司网站单个页面紧张搜索引擎蜘蛛
  • 公司需要一个简单的网站包头网站建设奥北
  • 怎么制作网站导航页新手做网站详细步骤
  • 自己个人网站后台怎么做wordpress多程序用户同步
  • 赣州网联科技有限公司wordpress安装后优化
  • 二手书的网站建设做设计在哪个网站找图片大全
  • 网站seo设计北京市建设投标网站
  • 承德做网站设计的网络推广主要内容
  • 婚纱网站源代码重庆网站定制公司
  • 同一个ip网站太多 seo应用商店网站源码