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

向量数据库:Chroma

一向量数据库简介将数据如文本、图像、音频等通过嵌入模型Embedding Model 转换为向量形式存储到向量数据库中并通过高效的索引和搜索算法实现快速检索。嵌入模型会将各种数据 (例如文本、图像、图表和视频) 转换为数值向量以便捕捉其在多维向量空间中的含义和细微差别。嵌入技术的选择取决于应用需求同时要兼顾语义深度、计算效率、要编码的数据的类型、维度等因素。向量数据库用于相似性搜索即通过计算向量之间的距离如欧几里得距离、余弦相似度等来找到与目标向量最相似的其他向量。它特别适合处理非结构化数据支持语义搜索、内容推荐等场景。数据不同使用的嵌入模型不同文本数据使用处理文本的嵌入模型图片数据使用处理图片的嵌入模型。存储向量数据库将嵌入向量存储为高维空间中的点并为每个向量分配唯一标识符ID同时支持存储元数据。检索通过近似最近邻ANN算法如PQ等对向量进行索引和快速搜索。二、Chorma简介Chromahttps://docs.trychroma.com/docs/overview/introduction 是一款开源的向量数据库专为高效存储和检索高维向量数据设计。其核心能力在于语义相似性搜索支持文本、图像等嵌入向量的快速匹配广泛应用于大模型上下文增强RAG、推荐系统、多模态检索等场景。与传统数据库不同Chroma 基于向量距离如余弦相似度、欧氏距离衡量数据关联性而非关键词匹配。核心优势轻量易用以 Python/JS 包形式嵌入代码无需独立部署适合快速原型开发。灵活集成支持自定义嵌入模型如 OpenAI、HuggingFace兼容 LangChain 等框架。高性能检索采用 HNSW 算法优化索引支持百万级向量毫秒级响应。多模式存储内存模式用于开发调试持久化模式支持生产环境数据落地。# 安装chromadbpip install chromadb# 导入importchromadb三、增删改查3.0 初始化客户端# 内存模式一般不推荐使用clientchromadb.Client()# 持久化模式常用clientchromadb.PersistentClient(path./data/chromadb)3.1 创建集合Collection集合Collection是 Chroma 中管理数据的基本单元类似关系数据库的表。在创建集合的时候需要指定嵌入函数。importosimportchromadbfromchromadb.utils.embedding_functionsimportOpenAIEmbeddingFunction ​ ​# 持久化模式clientchromadb.PersistentClient(path../db/chroma)​# 创建一个集合这里的集合名字必须在Chromadb中唯一# get_or_create_collectionmy_collectionclient.create_collection(namemy_collection,embedding_functionOpenAIEmbeddingFunction(api_keyos.getenv(OPENAI_API_KEY),api_basehttps://xxx,model_nametext-embedding-3-small))# 删除集合client.delete_collection(namemy_collection)3.2 获取集合my_collectionclient.get_collection(namemy_collection)​3.3 添加数据方式一使用Chroma指定的嵌入函数将文本生成向量。my_collection.add(documents[RAG是一种检索增强生成技术,向量数据库存储文档的嵌入表示,在机器学习领域智能体Agent通常指能够感知环境、做出决策并采取行动以实现特定目标的实体],metadatas[{source:RAG},{source:向量数据库},{source:Agent}],ids[id1,id2,id3])​print(添加数据后peek ,knowledge_collection.peek())print(添加数据后count ,knowledge_collection.count())​# 获取所有文档resultknowledge_collection.get()print(所有文档,result)方式二自己去调用模型获取向量然后再存储# 方式二手动传入预计算向量,knowledge_collection.add(embeddings[[1.2,2.3,4.5],[6.7,8.2,9.2]],documents[This is a document,This is another document],metadatas[{source:my_source},{source:my_source}],ids[id1,id2])3.4 查询根据条件查询rmy_collection.get(where{source:Agent},# 通过metadatas 中的字段来查询记录where_document{$contains:Agent}# 在集合中的文档中去检索包含Agent字符串的记录 可选)print(r)根据条件分页查询,通过limit限制每页条数offset表示开始下标rmy_collection.get(ids[id1,id2,id3],limit1,offset2)print(r)传入的query_texts 会使用集合的embedding function来转化为向量然后通过余弦相似度与集合中的文档来检索相似关系rmy_collection.query(query_textsAgent是什么,n_results1# 返回的结果个数)print(r)rmy_collection.query(query_embeddings[[0.5,0.6,...]],n_results2)3.5 更新# 修改文档knowledge_collection.update(ids[id3],documents[在机器学习领域Agent通常指能够感知环境、做出决策并采取行动以实现特定目标的实体,只需给出目标然后自动执行任务达成目标])3.5 删除knowledge_collection.delete(ids[id3])四、示例importosimportjsonfromdotenvimportload_dotenv;load_dotenv()importchromadbfromchromadb.utils.embedding_functionsimportOpenAIEmbeddingFunction# 初始化客户端clientchromadb.PersistentClient(path./db/chroma)my_collectionclient.get_or_create_collection(namemy_collection,embedding_functionOpenAIEmbeddingFunction(api_keyos.getenv(OPENAI_API_KEY),api_baseos.getenv(OPENAI_BASE_URL),model_nameazure_openai/text-embedding-3-small))# 获取集合my_collectionclient.get_collection(namemy_collection)# 添加向量my_collection.add(documents[向量数据库是一种组织有序的向量嵌入集合整合了可以随时创建、读取、更新和删除的向量嵌入。向量嵌入将数据块 (例如文本或图像) 表示为数值。,将数据如文本、图像、音频等通过嵌入模型Embedding Model 转换为向量形式存储到向量数据库中并通过高效的索引和搜索算法实现快速检索,嵌入模型会将各种数据 (例如文本、图像、图表和视频) 转换为数值向量以便捕捉其在多维向量空间中的含义和细微差别。嵌入技术的选择取决于应用需求同时要兼顾语义深度、计算效率、要编码的数据的类型、维度等因素。],metadatas[{source:RAG},{source:向量数据库},{source:Agent}],ids[id1,id2,id3])# 查询resultsmy_collection.query(query_texts向量数据库是什么?,n_results2# 返回的结果个数)print(json.dumps(results)){ids:[[id1,id2]],embeddings:null,documents:[[向量数据库是一种组织有序的向量嵌入集合整合了可以随时创建、读取、更新和删除的向量嵌入。向量嵌入将数据块 (例如文本或图像) 表示为数值。,将数据如文本、图像、音频等通过嵌入模型Embedding Model 转换为向量形式存储到向量数据库中并通过高效的索引和搜索算法实现快速检索]],uris:null,included:[metadatas,documents,distances],data:null,metadatas:[[{source:RAG},{source:向量数据库}]],distances:[[0.15911930799484253,0.42112505435943604]]}四、Client-Server Mode4.1 服务端在生产环境中也可以使用Client-Server Mode类似我们使用关系型数据库在服务器上部署一个mysql Server然后通过Client进行链接使用。# uv安装uv toolinstallchromadb# pip安装python3-mpipinstall--upgradechromadb# --path:表示存储数据的文件目录# --port表示监听的端口号默认端口:8000chroma run[--port8000]--path/db_path4.2 客户端importchromadb ​ chroma_clientchromadb.HttpClient(hostlocalhost,port8000)

相关文章:

向量数据库:Chroma

一:向量数据库简介 将数据(如文本、图像、音频等)通过嵌入模型(Embedding Model) 转换为向量形式存储到向量数据库中,并通过高效的索引和搜索算法实现快速检索。 嵌入模型会将各种数据 (例如文本、图像、…...

反向传播算法调优:提升神经网络训练效率的关键技巧

1. 反向传播算法调优的核心价值反向传播作为神经网络训练的基石算法,其配置质量直接影响模型收敛速度和最终性能。在实际工程中,我们常遇到模型训练不稳定、收敛缓慢或陷入局部最优等问题,这些问题90%以上可以通过调整反向传播参数解决。不同…...

HTTPie CLI与Teams:企业协作平台的消息推送终极指南

HTTPie CLI与Teams:企业协作平台的消息推送终极指南 【免费下载链接】cli 🥧 HTTPie CLI — modern, user-friendly command-line HTTP client for the API era. JSON support, colors, sessions, downloads, plugins & more. 项目地址: https://g…...

Beam权限管理详解:用户角色与内容隐藏机制

Beam权限管理详解:用户角色与内容隐藏机制 【免费下载链接】beam A simple message board for your organization or project 项目地址: https://gitcode.com/gh_mirrors/be/beam Beam是一个面向组织或项目的简单留言板系统,为团队提供高效的信息…...

CoreFreq故障排除:常见问题及解决方案完全指南

CoreFreq故障排除:常见问题及解决方案完全指南 【免费下载链接】CoreFreq CoreFreq : CPU monitoring and tuning software designed for the 64-bit processors. 项目地址: https://gitcode.com/gh_mirrors/co/CoreFreq CoreFreq是一款专为64位处理器设计的…...

Qwen3-0.6B-FP8惊艳效果:软链机制实现模型热切换的5秒操作演示

Qwen3-0.6B-FP8惊艳效果:软链机制实现模型热切换的5秒操作演示 1. 开篇:一个让模型切换像换衣服一样简单的技术 你有没有遇到过这样的场景?部署了一个AI模型,用了一段时间后,发现平台更新了模型权重文件,…...

competitive-ads-extractor技能:分析竞争对手广告的完整教程

competitive-ads-extractor技能:分析竞争对手广告的完整教程 【免费下载链接】awesome-codex-skills A curated list of practical Codex skills for automating workflows across the Codex CLI and API. 项目地址: https://gitcode.com/GitHub_Trending/aw/awes…...

超强性能测试awesome-docker:容器性能基准测试终极指南

超强性能测试awesome-docker:容器性能基准测试终极指南 【免费下载链接】awesome-docker :whale: A curated list of Docker resources and projects 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-docker awesome-docker是一个精心策划的Docker资源…...

Qianfan-OCR开源大模型部署:免编译、免依赖、开箱即用镜像方案

Qianfan-OCR开源大模型部署:免编译、免依赖、开箱即用镜像方案 1. 项目概述 Qianfan-OCR是百度千帆推出的开源文档智能多模态模型,基于4B参数的端到端视觉语言架构。这个开箱即用的镜像方案让传统OCR技术栈的复杂部署成为历史,无需处理繁琐…...

基于Next.js与React的AI智能体开发平台AgentBay深度解析

1. 项目概述:一个基于Next.js与React的AI智能体开发平台最近在折腾AI智能体(AI Agents)的开发,发现市面上虽然有不少框架,但要么过于复杂,要么生态不够完善,对于想快速构建一个具备特定技能、能…...

如何快速掌握DevDocs:API文档浏览的终极指南

如何快速掌握DevDocs:API文档浏览的终极指南 【免费下载链接】devdocs API Documentation Browser 项目地址: https://gitcode.com/GitHub_Trending/de/devdocs DevDocs是一款强大的API Documentation Browser,它整合了多种技术文档资源&#xff…...

OpenJK性能优化揭秘:为什么你的绝地学院运行更流畅了

OpenJK性能优化揭秘:为什么你的绝地学院运行更流畅了 【免费下载链接】OpenJK Community effort to maintain and improve Jedi Academy (SP & MP) Jedi Outcast (SP only) released by Raven Software 项目地址: https://gitcode.com/gh_mirrors/op/OpenJK …...

Sonic数字人应用案例:在线教育课件制作,让静态讲师“活”起来

Sonic数字人应用案例:在线教育课件制作,让静态讲师"活"起来 1. 数字人技术在教育领域的革新价值 在线教育行业近年来面临一个普遍痛点:优质师资资源分布不均,而传统录播课程缺乏互动性和生动性。根据2023年教育科技行…...

23 ComfyUI 实战:AnimateDiff + OpenPose Walking 姿态驱动视频生成

ComfyUI 实战:AnimateDiff OpenPose Walking 姿态驱动视频生成 摘要 在姿态驱动视频生成任务中,动作控制是否准确,决定了整条生成链路是否具有实际价值。相比人物外观、场景细节和画面风格,动作是否被正确执行更适合作为首要验…...

RWKV7-1.5B-world保姆级教程:从平台镜像市场部署→WEB入口访问→参数调优全链路

RWKV7-1.5B-world保姆级教程:从平台镜像市场部署→WEB入口访问→参数调优全链路 1. 引言:认识RWKV7-1.5B-world RWKV7-1.5B-world是基于第7代RWKV架构的轻量级双语对话模型,拥有15亿参数。与传统的Transformer架构不同,它采用创…...

Cogito v1 3B模型问题排查:内存不足、下载失败等常见问题解决

Cogito v1 3B模型问题排查:内存不足、下载失败等常见问题解决 1. 引言:为什么你的Cogito模型部署会出问题? 你刚拿到Cogito v1 3B这个号称“超越同规模开源模型”的宝贝,兴冲冲地按照教程部署,结果却卡在了各种问题上…...

22 ComfyUI 实战:SD1.5 + ControlNet OpenPose 复刻人物姿势,为什么真人图不如 Pose 图稳定?

ComfyUI 实战:SD1.5 ControlNet OpenPose 姿势复刻经验总结 一、前言 在使用 ComfyUI SD1.5 ControlNet OpenPose 进行姿势控制测试时,发现一个比较明显的现象:直接将真人照片作为控制输入时,姿势复刻效果通常不够稳定&#xf…...

新手必看!3步搞定Phi-3-mini-4k-instruct部署,开启你的AI对话之旅

新手必看!3步搞定Phi-3-mini-4k-instruct部署,开启你的AI对话之旅 1. 为什么选择Phi-3-mini-4k-instruct? 在开始部署之前,让我们先了解一下这个轻量级AI模型的独特优势。Phi-3-mini-4k-instruct是微软推出的高效能语言模型&…...

React Boilerplate 单元测试完整指南:组件测试与集成测试策略

React Boilerplate 单元测试完整指南:组件测试与集成测试策略 【免费下载链接】react-boilerplate 🔥 A highly scalable, offline-first foundation with the best developer experience and a focus on performance and best practices. 项目地址: h…...

终极Vim ASCII艺术创作指南:从零开始的文本绘画之旅

终极Vim ASCII艺术创作指南:从零开始的文本绘画之旅 【免费下载链接】vim The official Vim repository 项目地址: https://gitcode.com/gh_mirrors/vi/vim Vim作为一款强大的文本编辑器,不仅能高效处理代码,还能成为创作ASCII艺术的利…...

LocalAI蓝绿部署实战:实现零停机更新的终极指南

LocalAI蓝绿部署实战:实现零停机更新的终极指南 【免费下载链接】LocalAI LocalAI is the open-source AI engine. Run any model - LLMs, vision, voice, image, video - on any hardware. No GPU required. 项目地址: https://gitcode.com/GitHub_Trending/lo/L…...

如何将React与Docsify无缝集成:混合框架开发模式完整指南

如何将React与Docsify无缝集成:混合框架开发模式完整指南 【免费下载链接】docsify 🃏 A magical documentation site generator. 项目地址: https://gitcode.com/gh_mirrors/do/docsify Docsify作为一款轻量级文档生成工具,以其无需构…...

终极jq数据质量检测指南:如何快速发现和修复JSON问题

终极jq数据质量检测指南:如何快速发现和修复JSON问题 【免费下载链接】jq Command-line JSON processor 项目地址: https://gitcode.com/GitHub_Trending/jq/jq jq是一款轻量级且灵活的命令行JSON处理器,类似于sed、awk、grep等工具,但…...

DevDocs极限性能优化:毫秒级搜索200万+文档条目的终极指南

DevDocs极限性能优化:毫秒级搜索200万文档条目的终极指南 【免费下载链接】devdocs API Documentation Browser 项目地址: https://gitcode.com/GitHub_Trending/de/devdocs DevDocs作为一款强大的API文档浏览器,能够帮助开发者快速查找和浏览各种…...

一键转换二次元为真人:Anything to RealCharacters 2.5D转真人引擎功能体验

一键转换二次元为真人:Anything to RealCharacters 2.5D转真人引擎功能体验 1. 项目核心价值与定位 你是否曾经好奇过自己喜欢的二次元角色如果变成真人会是什么模样?或者需要将游戏原画快速转化为写实风格的概念设计?Anything to RealChar…...

【前端】React框架学习

React官网:React 官网中文文档 一、创建React项目 1. 在vscode界面的控制台输入以下命令就可以快速创建出react项目 2. 删除无用的项目文件...

Qwen3-14B开源模型部署案例:高校实验室低成本构建大模型教学平台

Qwen3-14B开源模型部署案例:高校实验室低成本构建大模型教学平台 1. 项目背景与价值 在人工智能教育领域,大语言模型已成为不可或缺的教学工具。然而,商业API的高昂成本和数据隐私问题,使得高校实验室难以大规模应用。Qwen3-14B…...

Qwen3-ASR-1.7B部署案例:图书馆有声书资源→可检索文本数据库

Qwen3-ASR-1.7B部署案例:图书馆有声书资源→可检索文本数据库 想象一下,图书馆里堆积如山的磁带、CD和数字音频资源,如何让这些宝贵的有声内容变得可搜索、可索引?传统的人工转录方式耗时耗力,而现代语音识别技术正在彻…...

终极指南:掌握docsify事件系统的生命周期钩子与自定义事件

终极指南:掌握docsify事件系统的生命周期钩子与自定义事件 【免费下载链接】docsify 🃏 A magical documentation site generator. 项目地址: https://gitcode.com/gh_mirrors/do/docsify docsify是一款神奇的文档网站生成工具,它能够…...

OpenTX模型编辑完全指南:从基础到高级配置

OpenTX模型编辑完全指南:从基础到高级配置 【免费下载链接】opentx OpenTX custom firmware for Transmitters 项目地址: https://gitcode.com/gh_mirrors/op/opentx OpenTX是一款功能强大的开源遥控器固件,为模型爱好者提供了高度自定义的控制体…...