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

【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.xdnf.cn/news/3951.html

相关文章:

  • 五一作业-day04
  • 解决跨域的4种方法
  • CRS 16 slot 设备硬件架构
  • 【RK3588嵌入式图形编程】-Cairo-Cairo图形库支持后端
  • 嵌入式Linux驱动学习
  • 哈希算法、搜索算法与二分查找算法在 C# 中的实现与应用
  • 基于机器学习算法预测二手车市场数据清洗与分析平台(源码+定制+讲解) 基于Python的数据挖掘与可视化 二手车数据处理与分析系统开发 (机器学习算法预测)
  • 深入理解 Bash 中的 $‘...‘ 字符串语法糖
  • 浅拷贝和深拷贝的区别
  • Android控件View、ImageView、WebView用法
  • 14.网络钓鱼实战
  • 【论文阅读】DETR+Deformable DETR
  • 【现代深度学习技术】现代循环神经网络07:序列到序列学习(seq2seq)
  • [学成在线]23-面试题总结
  • AIGC学术时代:DeepSeek如何助力实验与数值模拟
  • 基于PPO的自动驾驶小车绕圈任务
  • Photo-SLAM论文理解、环境搭建、代码理解与实测效果
  • Kubernetes 虚拟机安全关机操作流程
  • 生成式AI服务内容被滥用的法律责任划分
  • Matlab实现CNN-BiLSTM时间序列预测未来
  • 进程间通信——管道
  • Paramiko 核心类关系图解析
  • Android Compose 中 CompositionLocal 的全面解析与最佳实践
  • ARM介绍及其体系结构
  • 【Linux我做主】进度条小程序深度解析
  • 浅析AI大模型为何需要向量数据库?【入门基础】
  • 2021年第十二届蓝桥杯省赛B组Java题解
  • KaiwuDB X 遨博智能 | 构建智能产线监测管理新系统
  • Python推导式:简洁高效的数据处理利器
  • PCB实战篇