赞
踩
说到向量数据库就得提到Embedding技术,在人工智能的机器学习和深度学习领域,Embedding指的是将高维离散数据(如词汇、物品、用户等)映射到低维连续向量空间中的技术。下面我们用两个例子来对Embedding进行示意说明:
水果 | 甜度 | 酸度 | 向量值 |
---|---|---|---|
苹果 | 0.7 | -0.3 | [0.7,0.3] |
梨 | 0.8 | -0.2 | [0.8,0.2] |
桃子 | 0.6 | -0.5 | [0.6,-0.5] |
葡萄 | 0.9 | -0.2 | [0.9,-0.2] |
西瓜 | 0.6 | -0.1 | [0.6,-0.1] |
柠檬 | 0.4 | 0.8 | [0.4,0.8] |
上面只是一个简单物品量化的例子,实际中的维度或特征可能会有几百上千个。
根据上面的数据集,我们就可以进行我们的实验了,假设甜度为0.6,酸度为-0.3为最适宜食用的水果标准的话。那当我们向机器提问苹果、梨、桃子、葡萄、西瓜、柠檬这6种食物哪个最推荐食用? 机器就可以通过向量计算(相似度/相关度)出最接近水果食用标准的水果,如下图所示:绿色为标准,离他最近的是红色线苹果
向量距离有两种算法,两个坐标点的距离(欧氏距离),或者向量夹角大小(余弦夹角);
Chroma是人工智能原生开源向量数据库。它可以通过使知识、事实等数据向量化到LLM,让构建LLM的应用程序变得容易,详细内容可以点击官网地址进行查阅。
按照下面命令进行Chroma安装
pip install chromadb
你可能会碰到Microsoft Visual C++ 14.0 or greater is required这个异常,直接按照异常建议的下载地址,下载vs_BuildTools.exe,并点击安装c++桌面程序即可,如下图所示:
按照下面命令,运行Chroma
chroma run --path F:\chroma\data
将上面数据路径改成自己的地址即可运行,运行后,可以看到下面的效果:
按上面命令启动Chroma后,我们可以按下面代码进行测试:
import chromadb chroma_client = chromadb.Client() # chroma_client = chromadb.HttpClient(host='localhost', port=8000) collection = chroma_client.create_collection(name="demo") #chroma_client = chromadb.PersistentClient(path="/path/to/save/to") # 设置持久化路径 # 添加文档、嵌入向量和元数据到集合中 collection.add( documents=["苹果", "梨", "桃子", "葡萄", "西瓜", "柠檬"], metadatas=[{"sweetness": "甜度", "acidity": "酸度"}] * 6, # 使用列表乘法重复元数据字典 embeddings=[[0.7, -0.3], [0.8, -0.2], [0.6, -0.4], [0.9, -0.2], [0.6, -0.1], [0.4, 0.8]], ids=["A1", "A2", "A3", "A4", "A5", "A6"] ) #获取查看添加的向量数据 result=collection.get( ids=["A1", "A2","A3","A4","A5","A6"], include=["metadatas", "documents", "embeddings"] # 明确指定包含嵌入向量(默认不会返回embeddings) ) print(result)
运行代码效果如下:
chroma的详细使用,可以去官网查阅(上面已经提供过地址了)。
向量数据库是支撑现代AI技术,特别是RAG等高级应用的关键基础设施之一,它通过优化数据管理和检索过程,增强了AI应用的效率、准确性和实用性。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。