• 什么是向量数据?

向量数据

向量数据(Vector Data)是指以向量的形式表示的数据。在数据科学和机器学习的上下文中,向量数据通常用于表示各种类型的信息,包括文本、图像、音频等。这些原始数据首先被转化为特征向量,这些特征向量能够捕捉数据的内在特性和模式。

一般来说,现实中的数据大部分都是非结构化的数据,也就是说它不是由定义好的模型来描述的。非结构化数据,像包括文本、图像、视频或音乐标题等。处理非结构化数据的一种方法是将其矢量化。矢量化意味着将非结构化数据映射到一个平面的数字序列。这样的矢量表示嵌入在N维空间中的数据。

机器学习模型促进了嵌入式(embedding)作为一种广泛使用的生成密集、低维向量表示的方法的兴起。给定合适的机器学习模型,生成的嵌入可以封装数据中固有的复杂模式和语义。

向量数据是数据科学和机器学习领域中的重要概念,它们为各种复杂的数据分析和处理任务提供了有力的支持。

深入浅出:大语言模型中必不可少的技术——Embedding简介

  • 什么是向量数据库?

向量数据库,顾名思义是支持存储向量数据的数据库。redis是一种支持存储向量数据的数据库模型。

向量数据库的原理基于向量化的数据表示和相似度计算。在向量数据库中,数据被转化为高维向量,并通过向量化算法将其映射到一个向量空间中。这样,具有相似特征的数据将在向量空间中距离较近,而不相似的数据将距离较远。基于先进的向量索引结构和相似度计算算法,向量数据库能够提供快速、准确的数据查询和检索功能。

  • redis向量数据库

1)使用python安装redis

import json 
import time

import numpy as np 
import pandas as pd
import redis
import requests 
from redis.commands.search.field import (
    NumericField,
    TagField,
    TextField,
    VectorField,
)
from redis.commands.search.indexDefinition import IndexDefinition, IndexType
from redis.commands.search.query import Query
from sentence_transformers import SentenceTransformer

实例化Redis客户端。默认情况下,Redis返回二进制响应。若要对其进行解码,请将decode_response参数设置为True:
client = redis.Redis(host="localhost", port=6379, decode_responses=True)

示例数据:

{
  "model": "Jigger",
  "brand": "Velorim",
  "price": 270,
  "type": "Kids bikes",
  "specs": {
    "material": "aluminium",
    "weight": "10"
  },
  "description": "Small and powerful, the Jigger is the best ride for the smallest of tikes! ...
}

一获取演示数据

1)获取json数据

url = "https://raw.githubusercontent.com/bsbodden/redis_vss_getting_started/main/data/bikes.json"
response = requests.get(url)
bikes = response.json()
#查看json数据
json.dumps(bikes[0], indent=2)

将json数据存储到数据库中

然后,您对bikes数组进行迭代,通过使用JSON将数据作为JSON文档存储在数据库中。

pipeline = client.pipeline()
for i, bike in enumerate(bikes, start=1):
    redis_key = f"bikes:{i:03}"
    pipeline.json().set(redis_key, "$", bike)
res = pipeline.execute()
# >>> [True, True, True, True, True, True, True, True, True, True, True]

取数据

res = client.json().get("bikes:010", "$.model"
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐