【NLP】33. Pinecone + OpenAI :構建自定義語義搜索系統

Pinecone + OpenAI 中文教學教程:構建自定義語義搜索系統

一、背景介紹

當下 AI 問答系統、矩陣檢索、短文本分類等場景中,都需要很好地實現 “根據輸入進行相似給點搜索”。這種算法基礎稱為 “向量搜索”,它的核心是將文本轉換為向量后,在向量空間里搜索最相似的項目。

Pinecone 是一種專業的向量數據庫服務,支持高效的向量存儲、檢索和更新。


二、實驗目標

體驗 Pinecone 的基礎操作:

  1. 建立一個向量索引
  2. 將自定義的文本輸入轉換為向量并 upsert 到 Pinecone
  3. 輸入自然語言問題,搜索最相似文檔

示例場景:“動物百科問答” 搜索系統


三、環境準備

pip install -qU \openai==0.27.7 \pinecone==3.0.0 \sentence-transformers==3.4.1 \tqdm

四、設置 API Key

在 Pinecone 和 OpenAI 帳號中獲取 API Key,并填入如下代碼:

pinecone_api_key = 'your-pinecone-key'
openai_api_key = 'your-openai-key'

五、初始化 Pinecone 并創建索引

import pinecone
pinecone.init(api_key=pinecone_api_key, environment='gcp-starter')index_name = 'custom-animal-db'
if index_name not in pinecone.list_indexes():pinecone.create_index(index_name, dimension=1536)
index = pinecone.Index(index_name)

六、定義自定義文檔

documents = [{"id": "doc1", "text": "老虎是一種主要生活在亞洲的肉食動物"},{"id": "doc2", "text": "大象是陸地上最大的動物,有長鼻和大耳朵"},{"id": "doc3", "text": "保齡羊是生活在歐洲高原的羊類動物"},{"id": "doc4", "text": "老鼠是一種常見小型動物,有很強的生存力"}
]

七、使用 OpenAI 生成向量

import openai
openai.api_key = openai_api_keydef get_embedding(text):resp = openai.Embedding.create(input=text,model="text-embedding-ada-002")return resp['data'][0]['embedding']

八、將文檔向量化并 upsert 到 Pinecone

for doc in documents:vec = get_embedding(doc['text'])index.upsert([(doc['id'], vec, {"text": doc['text']})])

九、進行搜索:按問題返回相似給點

query = "哪些動物有長鼻或低溫生存力強?"
query_vec = get_embedding(query)result = index.query(vector=query_vec, top_k=2, include_metadata=True)for match in result["matches"]:print(f"Score: {match['score']:.2f}, Text: {match['metadata']['text']}")

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/80181.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/80181.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/80181.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Mybatis-plus常用語法】

MyBatis-Plus 是 MyBatis 的增強工具,提供了很多便捷的功能來簡化開發。以下是一些 MyBatis-Plus 的常見語法: 實體類注解:使用 TableName 注解來指定實體類和數據庫表的映射關系。 TableName("user") public class User {privat…

Logback官方文檔翻譯章節目錄

Logback官方文檔翻譯章節目錄 第一章 Logback簡介 第二章 Logback的架構(一) Logback的架構(二) Logback的架構(三) 持續更新中…

Python變量作用域

變量作用域是Python編程中非常重要的基礎概念,理解它可以幫助你避免很多常見的錯誤。本文將用簡單易懂的方式,帶你全面掌握Python變量作用域的所有細節。 一、什么是變量作用域? 變量作用域(Scope)指的是變量在程序中…

初學者的AI智能體課程:構建AI智能體的十堂課

初學者的AI智能體課程:構建AI智能體的十堂課 在人工智能(AI)領域,AI智能體正在逐漸發揮其不容忽視的作用。自動化的智能體不僅僅在理論上廣泛討論,更加在實際應用中開辟了一片新的天地。那么如何動手開發屬于自己的AI智能體呢?Microsoft提供的AI智能體入門課正是為此而設…

【并發編程】MySQL鎖及單機鎖實現

目錄 一、MySQL鎖機制 1.1 按鎖粒度劃分 1.2 按鎖功能劃分 1.3 InnoDB鎖實現機制 (1)記錄鎖(Record Lock) (2) 間隙鎖(Gap Lock) (3) 臨鍵鎖(Next-Key Lock) (4) 插入意向鎖(Insert Intention Lock) 二、基于 JVM 本地鎖實現,保證線程安全 2.1 線程不安全的分析 2.1…

能耗優化新引擎:EIOT平臺助力企業降本增效

安科瑞顧強 數字化轉型的背景下,能源管理正加速向智能化、遠程化方向演進。安科瑞電氣推出的EIOT托管平臺及ADW300系列4G無線計量儀表,通過云端技術與無線通信的深度融合,為用戶打造了高效、便捷的遠程能源監測與管理體系,助力企…

(14)Element Plus項目綜合案例

本系列教程目錄:Vue3Element Plus全套學習筆記-目錄大綱 文章目錄 第3章 綜合案例3.1 搭建項目3.1.1 創建Vite工程3.1.2 配置路由 3.2 登錄模塊頁面3.2.1 注冊頁面3.2.2 登錄頁面3.2.3 忘記密碼頁面 3.3 導航設置3.3.1 頭部3.3.2 側邊欄與底部1)頭像部分…

Webug4.0靶場通關筆記22- 第27關文件包含

目錄 一、文件包含 1、原理分析 2、文件包含函數 (1)include( ) (2)include_once( ) (3)require( ) (4)require_once( ) 二、第27關滲透實戰 1、打開靶場 2、源碼分析 3、…

〖 Linux 〗解決 VS Code 遠程連接服務器的常見問題

文章目錄 解決 VS Code 遠程連接服務器的斷開問題VS Code Remote-SSH一直彈出輸入密碼的問題VsCode C 語法檢測失效不標紅色波浪線 解決辦法卸載擴展方式: 解決vscode C智能提示緩慢 解決 VS Code 遠程連接服務器的斷開問題 解決 vscode 卡頓,卡死&…

ERC-20與ERC-721:區塊鏈代幣標準的雙星解析

一、代幣標準的誕生背景 在以太坊生態中,代幣標準是構建去中心化應用(DApps)的基石。ERC-20與ERC-721分別代表同質化與非同質化代幣的兩大核心標準,前者支撐著90%以上的加密資產流通,后者則開啟了數字資產唯一性的新時…

C++入門小館 :多態

嘿,各位技術潮人!好久不見甚是想念。生活就像一場奇妙冒險,而編程就是那把超酷的萬能鑰匙。此刻,陽光灑在鍵盤上,靈感在指尖跳躍,讓我們拋開一切束縛,給平淡日子加點料,注入滿滿的pa…

【NextPilot日志移植】整體功能概要

整體日志系統的實現功能 該日志系統主要實現了飛行日志的記錄功能,支持多種日志記錄模式,可將日志存儲到文件或通過 MAVLink 協議傳輸,同時具備日志加密、空間管理、事件記錄等功能。具體如下: 日志記錄模式:支持按武…

數字化轉型:概念性名詞淺談(第二十五講)

大家好,今天接著介紹數字化轉型的概念性名詞系列。 (1)SOP(標準作業程序) 標準作業程序(Standard Operating Procedure, SOPs)是在有限時間與資源內,為了執行復雜的日常事務所設計的內部程序。從管理學的…

交叉編譯 opencv-4.10

編譯說明 opencv 下包含很多模塊,各個模塊的作用可以參考Opencv—模塊概覽. 嵌入式考慮有限存儲等因素會對模塊進行裁剪,我這里主要保留圖像拼接(stitching)圖片編解碼(imgcodecs)與特征點匹配&#xff08…

Python cv2對象檢測與跟蹤:從基礎到進階實戰

在計算機視覺領域,對象檢測(定位目標位置)與對象跟蹤(持續追蹤目標運動)是視頻分析、自動駕駛、智能監控等應用的核心技術。本文將結合OpenCV的cv2庫,系統講解其原理與Python實現方法。 一、對象檢測 vs 對…

亞馬遜推出新型倉儲機器人 Vulcan:具備“觸覺”但不會取代人類工人

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎?訂閱我們的簡報,深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同,從行業內部的深度分析和實用指南中受益。不要錯過這個機會,成為AI領…

緩存套餐-03.功能測試

一.功能測試 點擊小程序,就會觸發根據分類id查詢套餐方法,根據分類id查詢套餐。 第一次查詢,redis中沒有數據,就會發sql進行sql數據庫查詢。 redis當中就有了對應的緩存。 再次點擊,發現sql根本沒有執行,…

WebFlux與HttpStreamable關系解析

1-Streamable 1-WebFlux與HttpStreamable關系解析2-MCP協議Streamable HTTP 2-參考網址 MCP協議Streamable HTTPMCP協議重大升級,Spring AI Alibaba聯合Higress發布業界首個Streamable HTTP實現方案 3-WebFlux與HttpStreamable關系解析 WebFlux 和 HttpStreamabl…

順豐科技:從 Presto 到 Doris 湖倉構架升級,提速 3 倍,降本 48%

導讀:順豐科技引入 Doris 替換 Presto,在內部可視化數據自助分析工具豐景臺場景廣泛應用。目前,順豐臨時查詢業務、豐景臺報表業務的 Presto 場景已經 100% 切換到 Doris 集群中,日均查詢量 100W。并實現 P95 性能提升近 3 倍&…

如何在Jmeter中調用C程序?

在JMeter中調用C語言程序可以通過以下幾種方式實現: 方法一:使用OS Process Sampler JMeter的“OS Process Sampler”可以用來調用外部程序,包括C語言編寫的可執行文件。 步驟: 準備C語言程序: 編寫C語言代碼并編譯…