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

大模型RAG项目实战:Pinecone向量数据库代码实践

注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《GPT多模态大模型与AI Agent智能体》(跟我一起学人工智能)【陈敬雷编著】【清华大学出版社】

清华《GPT多模态大模型与AI Agent智能体》书籍配套视频课程【陈敬雷】

文章目录

  • GPT多模态大模型与AI Agent智能体系列一百一二十七
    • 大模型RAG项目实战:Pinecone向量数据库代码实践
  • 初始化Pinecone客户端,使用你的API密钥和环境信息
  • 创建一个新的索引,这里设置向量维度为1536
  • 列出所有现有的索引
  • 描述指定索引的信息
  • 删除索引(演示目的,实际使用时请小心)
  • pinecone.delete_index('ai_knowledge')
  • 获取索引实例,用于后续操作
  • 获取索引的统计信息
  • 定义文本向量化函数,使用OpenAI的嵌入模型
  • 准备知识库数据,包含AI相关的问题与答案
  • 向索引中添加或更新向量数据
  • 执行相似度搜索
  • 混合搜索,结合向量查询和元数据过滤
  • 示例删除数据流程(先获取再删除)
  • result = index.fetch(ids=['ml_q1'])
  • print(result['vectors']['ml_q1']['metadata'])
  • index.delete(ids=['ml_q1']) # 实际删除操作
  • 主函数,整合所有操作
  • 运行主函数
      • 更多技术内容
  • 总结

GPT多模态大模型与AI Agent智能体系列一百一二十七

大模型RAG项目实战:Pinecone向量数据库代码实践

5.3.3 Pinecone
Pinecone是一个托管式的向量数据库服务,它专注于为机器学习模型和应用程序提供快速、可扩展的向量搜索能力。与关系型数据库或键值存储不同,Pinecone设计用来高效处理高维稀疏向量,这些向量常用于表示文本、图像、音频等复杂数据的特征空间。通过优化的索引结构和查询算法,Pinecone能够实现亚毫秒级的相似性搜索,这对于需要实时反馈的应用场景至关重要。Pinecone是商业项目,不是开源免费的,可以访问官网https://www.pinecone.io/注册号账号使用。Pinecone的核心在于其高效的向量索引机制。它首先接收用户上传的向量数据,并构建一个索引结构,这个结构被优化以支持快速的相似性搜索。当接收到查询向量时,Pinecone利用空间搜索算法快速定位到最相似的几个向量,而不是逐一比较所有数据,这大大提升了搜索效率。
1.核心特性
Pinecone核心特性包括:
(1)高性能搜索:Pinecone利用先进的索引技术,如近似最近邻搜索算法,能在海量向量集中快速找到最相似的向量,从而支持实时的推荐和检索需求。
(2)简单易用的API:无论是通过Python客户端库还是REST API,Pinecone都提供了简洁直观的接口,让开发者能够轻松地集成向量搜索功能到现有应用中。例如,只需几行代码即可创建索引、插入向量数据,并执行相似性查询。
(3)自动缩放:随着数据量的增长和查询需求的变化,Pinecone能够自动调整资源,确保查询性能始终保持高效稳定,无需用户手动配置服务器或管理基础设施。
(4)多环境部署:支持多种部署环境,包括公有云和私有部署,确保数据安全性和合规性,满足不同企业的需求。
2.代码实战
下面通过安装Pinecone Python客户端,使用Python代码来操作Pinecone。通过pip3 install pinecone-client命令来安装Pinecone Python客户端。接下来通过Python代码展示如何使用Pinecone API以及与OpenAI API集成,实现向量数据的存储、查询、更新及删除操作,特别是在构建一个基于向量的AI知识库场景中的应用,代码如下:
#第5章/PineconeDemo.py
import pinecone
from openai import OpenAI

初始化Pinecone客户端,使用你的API密钥和环境信息

pinecone.init(
api_key=‘你的Pinecone API密钥’, # 请替换为实际的Pinecone API密钥
environment=‘你的Pinecone环境名称’ # 请替换为实际的Pinecone环境名称
)

创建一个新的索引,这里设置向量维度为1536

pinecone.create_index(‘ai_knowledge’, dimension=1536)

列出所有现有的索引

print(pinecone.list_indexes()) # 应该能看到刚创建的 ‘ai_knowledge’

描述指定索引的信息

print(pinecone.describe_index(‘ai_knowledge’))

删除索引(演示目的,实际使用时请小心)

pinecone.delete_index(‘ai_knowledge’)

获取索引实例,用于后续操作

index = pinecone.Index(‘ai_knowledge’)

获取索引的统计信息

print(index.describe_index_stats())

定义文本向量化函数,使用OpenAI的嵌入模型

def embedding(text):
response = client.embeddings.create(
model=‘text-embedding-ada-002’,
input=[text]
)
return response.data[0].embedding

准备知识库数据,包含AI相关的问题与答案

knowledge_base = [
{“system”: “ai_knowledge”, “question”: “什么是机器学习?”, “answer”: “机器学习是一门计算机科学,使系统无需明确编程就能从数据中学习并做出预测或决策。”},
{“system”: “ai_knowledge”, “question”: “深度学习和机器学习的区别是什么?”, “answer”: “深度学习是机器学习的一个子集,专注于使用深层神经网络解决复杂模式识别和学习问题。”},
]

向索引中添加或更新向量数据

index.upsert(
vectors=[
(‘ml_q1’, embedding(knowledge_base[0][‘question’]), knowledge_base[0]),
(‘dl_q1’, embedding(knowledge_base[1][‘question’]), knowledge_base[1]),
]
)

执行相似度搜索

question = ‘机器学习的基本概念是什么?’
response = index.query(
top_k=1,
include_values=False,
include_metadata=True,
vector=embedding(question)
)
print(response)

混合搜索,结合向量查询和元数据过滤

question = ‘深度学习的特点?’
response = index.query(
top_k=1,
include_values=False,
include_metadata=True,
vector=embedding(question),
filter={‘system’: ‘ai_knowledge’}
)
print(response)

示例删除数据流程(先获取再删除)

result = index.fetch(ids=[‘ml_q1’])

print(result[‘vectors’][‘ml_q1’][‘metadata’])

index.delete(ids=[‘ml_q1’]) # 实际删除操作

主函数,整合所有操作

def main():
global client # 声明client为全局变量
client = OpenAI(api_key=‘你的OpenAI API密钥’) # 初始化OpenAI客户端
# 示例查询
question = ‘简述人工智能的发展历程?’
response = index.query(
top_k=3,
include_values=False,
include_metadata=True,
vector=embedding(question)
)
# 构建基于知识库的用户提示
knowledge_summary = ‘\n’.join([f"问题: {item.metadata[‘question’]} 回答: {item.metadata[‘answer’]}" for item in response.matches])
user_prompt = f"“”
请参考以下知识库内容回答问题:
{knowledge_summary}
用户问题: {question}
“”"
print(user_prompt)
# 使用GPT-4完成知识问答
system_prompt = “你是一个AI助手,利用提供的知识库信息来准确回答问题。”
chat_result = chat_completion(system_prompt, user_prompt)
print(“AI助手的回答:”, chat_result.choices[0].message.content)

运行主函数

if name == “main”:
main()
在实际运行此代码前,请确保替换所有占位符,比如 “你的Pinecone API密钥”,“你的OpenAI API密钥”,“你的Pinecone环境名称”为实际的认证信息。
下一篇内容详解更多…

更多技术内容

更多技术内容可参见
清华《GPT多模态大模型与AI Agent智能体》书籍配套视频【陈敬雷】。
更多的技术交流和探讨也欢迎加我个人微信chenjinglei66。

总结

此文章有对应的配套新书教材和视频:

【配套新书教材】
《GPT多模态大模型与AI Agent智能体》(跟我一起学人工智能)【陈敬雷编著】【清华大学出版社】
新书特色:《GPT多模态大模型与AI Agent智能体》(跟我一起学人工智能)是一本2025年清华大学出版社出版的图书,作者是陈敬雷,本书深入探讨了GPT多模态大模型与AI Agent智能体的技术原理及其在企业中的应用落地。
全书共8章,从大模型技术原理切入,逐步深入大模型训练及微调,还介绍了众多国内外主流大模型。LangChain技术、RAG检索增强生成、多模态大模型等均有深入讲解。对AI Agent智能体,从定义、原理到主流框架也都进行了深入讲解。在企业应用落地方面,本书提供了丰富的案例分析,如基于大模型的对话式推荐系统、多模态搜索、NL2SQL数据即席查询、智能客服对话机器人、多模态数字人,以及多模态具身智能等。这些案例不仅展示了大模型技术的实际应用,也为读者提供了宝贵的实践经验。
本书适合对大模型、多模态技术及AI Agent感兴趣的读者阅读,也特别适合作为高等院校本科生和研究生的教材或参考书。书中内容丰富、系统,既有理论知识的深入讲解,也有大量的实践案例和代码示例,能够帮助学生在掌握理论知识的同时,培养实际操作能力和解决问题的能力。通过阅读本书,读者将能够更好地理解大模型技术的前沿发展,并将其应用于实际工作中,推动人工智能技术的进步和创新。

【配套视频】

清华《GPT多模态大模型与AI Agent智能体》书籍配套视频【陈敬雷】
视频特色: 前沿技术深度解析,把握行业脉搏

实战驱动,掌握大模型开发全流程

智能涌现与 AGI 前瞻,抢占技术高地

上一篇:《GPT多模态大模型与AI Agent智能体》系列一》大模型技术原理 - 大模型技术的起源、思想
下一篇:DeepSeek大模型技术系列五》DeepSeek大模型基础设施全解析:支撑万亿参数模型的幕后英雄

http://www.xdnf.cn/news/1437301.html

相关文章:

  • 二叉树经典题目详解(下)
  • 【数据分享】31 省、342 个地级市、2532 个区县农业机械总动力面板数据(2000 - 2020)
  • MySQL数据库——概述及最基本的使用
  • Python实现浅拷贝的常用策略
  • Vite 插件 @vitejs/plugin-legacy 深度解析:旧浏览器兼容指南
  • 【Linux】信号量
  • 09.01总结
  • LeetCode算法日记 - Day 30: K 个一组翻转链表、两数之和
  • 基于Springboot和Vue的前后端分离项目
  • playwright+python UI自动化测试中实现图片颜色和像素对比
  • milvus使用
  • Hard Disk Sentinel:全面监控硬盘和SSD的健康与性能
  • Python学习-day4
  • 2026届长亭科技秋招正式开始
  • 算法 --- 模拟
  • NLP学习系列 | Transformer代码简单实现
  • Zephyr如何注册设备实例
  • [Java]PTA:jmu-Java-01入门-取数字浮点数
  • 自学嵌入式第三十三天:网络编程-UDP
  • Day19(前端:JavaScript基础阶段)
  • 分布式中防止重复消费
  • Spring Security的@PreAuthorize注解为什么会知道用户角色?
  • 开悟篇Docker从零到实战一篇文章搞定
  • 基于Python毕业设计推荐:基于Django的全国降水分析可视化系统
  • 战略咨询——解读81页中小企业企业战略规划方案【附全文阅读】
  • go-mapus最简单的离线瓦片地图协作
  • C++后端开发重点知识点
  • Adafruit_nRF52_Bootloader 使用 uf2
  • Spring Cloud Config 核心原理
  • 【C++】编写通用模板代码的重要技巧:T()