Получение оценки сходства в Python для векторной индексации HNSW в PostgreSQLPython

Программы на Python
Anonymous
Получение оценки сходства в Python для векторной индексации HNSW в PostgreSQL

Сообщение Anonymous »

У меня возникли проблемы с возвратом результатов векторного поиска в PostgreSQL. Я создал индекс HNSW для столбцов answer_embedding и answer_keyword_embedding.
На Python я написал эту функцию для возврата 5 наиболее распространенных документов на основе внедрения ответа QA. Это работает:

Код: Выделить всё

similarity_score = (
(Document.answer_embedding.op('')(embedding_array)) +
(Document.answer_keyword_embedding.op('')(keyword_embedding_array))
)

query = (
select(Document.doc_id, Document.answer))
.order_by(similarity_score)
.limit(max_neighbors)
)
results = session.execute(query).all()
Однако я также хочу получить оценку актуальности каждого документа. Что бы я ни делал, я вижу следующее сообщение об ошибке:

Сессия не удалась: объект 'float' не подлежит подписке

Следующие фрагменты кода выдают одну и ту же ошибку:

Сессия не удалась: объект 'float' не подлежит подписке p>

Код: Выделить всё

query = (
select(Document.doc_id, Document.answer,similarity_score.label("similarity"))
.order_by(similarity_score)
.limit(max_neighbors)
)

Код: Выделить всё

query = (
select(Document).add_columns(similarity_score.label("similarity"))
.order_by(similarity_score)
.limit(max_neighbors)
)
Если я преобразую его для использования полного текста запроса, я получу ошибку, что оператор «»/»» не распознается.
Когда я печатаю запрос, он выглядит так.

Код: Выделить всё

Query: SELECT "Document"."DocId", "Document"."Answer", ("Document"."AnswerEmbedding"  :AnswerEmbedding_1) + ("Document"."AnswerKeywordEmbedding"  :AnswerKeywordEmbedding_1) AS similarity
FROM "Document" ORDER BY ("Document"."AnswerEmbedding"  :AnswerEmbedding_1) + ("Document"."AnswerKeywordEmbedding"  :AnswerKeywordEmbedding_1)
LIMIT :param_1
Поскольку я могу получить документы, мне трудно понять, почему я не могу получить оценку для каждого документа.


Подробнее здесь: https://stackoverflow.com/questions/790 ... postgresql

Вернуться в «Python»