gpt4 book ai didi

java - 如何使用 Java 将 vector 插入 Cassandra?

转载 作者:行者123 更新时间:2023-12-03 07:52:09 27 4
gpt4 key购买 nike

我在将 Java Vector 类型映射到 Java 中的 Cassandra 表 (Astra DB) 时遇到问题。这个想法是通过带有 vector 搜索的 ANN 进行查询以返回电影推荐。

这是我的表定义:

CREATE TABLE movies (
movie_id INT PRIMARY KEY,
title TEXT,
release_date DATE,
movie_vector vector<float,7>);

映射到类:

public class Movie {
private int movieId;
private String title;
private LocalDate releaseDate;
private CqlVector<Float> vector;

(包含 getter 和 setter)

并且它的属性通过以下 CQL 绑定(bind)到准备好的语句:

private final static String strCQLINSERT = "INSERT INTO movies "
+ "(movie_id,title,release_date,movie_vector) "
+ "VALUES (?,?,?,?)";

然后,我使用 Java Vector API 从 float 数组定义一个 vector ,然后尝试将其映射到我的类中。

Movie movie = new Movie();
// setting other properties on movie here
// ...
// create vector locally
float[] fltVector = {collectionId,genre1,genre2,genre3,popularity,rating,votes};
FloatVector vector = FloatVector.fromArray(FloatVector.SPECIES_MAX,fltVector,0);
// map vector to class
movie.setVector(vector);

在我的 Movie 类上设置 vector 属性(类型为 CqlVector)时,出现以下错误:

The method newInstance in the type CqlVector is not applicable for the arguments FloatVector

我还尝试过使用 CqlVector 类型的 newInstance 方法,但这似乎也不起作用。如何将 fltVector 映射到我的表,以便可以插入数据?

最佳答案

因此,在 Java 和 Cassandra 中使用 vector 数据类型都是一件非常新鲜的事情。事实上,截至目前,CqlVector类型仅在 Astra DB 中有效,而 Java FloatVector类型不匹配。

话虽这么说,有几种方法可以实例化新的 CqlVector目的。 newInstance方法接受 List<Float>或 vector 的字符串表示形式。字符串表示可能很难正确,因此使用 List<Float>路线可能是最简单的路径:

List<Float> vectorListFloat = new ArrayList<>();

vectorListFloat.add(collectionId);
vectorListFloat.add(genre1);
vectorListFloat.add(genre2);
vectorListFloat.add(genre3);
vectorListFloat.add(popularity);
vectorListFloat.add(voteAverage);
vectorListFloat.add(voteCount);

CqlVector cqlVector = CqlVector.newInstance(vectorListFloat);

cqlVectornewInstance(vectorListFloat) 实例化的对象,现在应该可以工作了:

movie.setVector(cqlVector);

关于java - 如何使用 Java 将 vector 插入 Cassandra?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76923172/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com