首页 > 其他分享 >探索SAP HANA Cloud Vector Engine:从设置到自查询的全面指南

探索SAP HANA Cloud Vector Engine:从设置到自查询的全面指南

时间:2024-12-16 11:57:31浏览次数:7  
标签:Engine name HANA langchain Vector import query SAP

探索SAP HANA Cloud Vector Engine:从设置到自查询的全面指南

在数据科学和人工智能的世界中,SAP HANA Cloud Vector Engine提供了强大的向量存储能力。本文将深入探讨如何使用SAP HANA Cloud向量引擎,设置向量存储及其自查询功能。

引言

在处理大量数据时,能够高效地存储和检索数据是至关重要的。SAP HANA Cloud Vector Engine作为一种高效的向量存储解决方案,帮助开发者处理复杂数据查询。本文旨在提供详细的步骤帮助用户在SAP HANA中设置向量存储,并实现自查询功能。

1. 初始设置

连接到SAP HANA数据库

在开始之前,确保你已具备必要的环境变量设置用于连接数据库。

import os
from hdbcli import dbapi

# 建立数据库连接
connection = dbapi.connect(
    address=os.environ.get("HANA_DB_ADDRESS"),
    port=os.environ.get("HANA_DB_PORT"),
    user=os.environ.get("HANA_DB_USER"),
    password=os.environ.get("HANA_DB_PASSWORD"),
    autocommit=True,
    sslValidateCertificate=False,
)

2. 创建向量存储表

为了能够进行自查询,需要在HANA中创建一个包含元数据的向量存储表。

# 创建自定义表
cur = connection.cursor()
cur.execute("DROP TABLE LANGCHAIN_DEMO_SELF_QUERY", ignoreErrors=True)
cur.execute(
    (
        """CREATE TABLE "LANGCHAIN_DEMO_SELF_QUERY"  (
        "name" NVARCHAR(100), "is_active" BOOLEAN, "id" INTEGER, "height" DOUBLE,
        "VEC_TEXT" NCLOB, 
        "VEC_META" NCLOB, 
        "VEC_VECTOR" REAL_VECTOR
        )"""
    )
)

3. 添加文档到向量存储

接下来,使用langchain库将文档添加到刚刚创建的表中。

from langchain_community.vectorstores.hanavector import HanaDB
from langchain_core.documents import Document
from langchain_openai import OpenAIEmbeddings

embeddings = OpenAIEmbeddings()

docs = [
    Document(
        page_content="First",
        metadata={"name": "adam", "is_active": True, "id": 1, "height": 10.0},
    ),
    Document(
        page_content="Second",
        metadata={"name": "bob", "is_active": False, "id": 2, "height": 5.7},
    ),
    Document(
        page_content="Third",
        metadata={"name": "jane", "is_active": True, "id": 3, "height": 2.4},
    ),
]

db = HanaDB(
    connection=connection,
    embedding=embeddings,
    table_name="LANGCHAIN_DEMO_SELF_QUERY",
    specific_metadata_columns=["name", "is_active", "id", "height"],
)

# 删除现有文档
db.delete(filter={})
db.add_documents(docs)

4. 实现自查询功能

通过SelfQueryRetriever实现对向量存储表的自查询。

from langchain.chains.query_constructor.base import AttributeInfo
from langchain.retrievers.self_query.base import SelfQueryRetriever
from langchain_community.query_constructors.hanavector import HanaTranslator
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(model="gpt-3.5-turbo")

metadata_field_info = [
    AttributeInfo(
        name="name",
        description="The name of the person",
        type="string",
    ),
    AttributeInfo(
        name="is_active",
        description="Whether the person is active",
        type="boolean",
    ),
    AttributeInfo(
        name="id",
        description="The ID of the person",
        type="integer",
    ),
    AttributeInfo(
        name="height",
        description="The height of the person",
        type="float",
    ),
]

document_content_description = "A collection of persons"

hana_translator = HanaTranslator()

retriever = SelfQueryRetriever.from_llm(
    llm,
    db,
    document_content_description,
    metadata_field_info,
    structured_query_translator=hana_translator,
)

# 查询不活跃的人
query_prompt = "Which person is not active?"

docs = retriever.invoke(input=query_prompt)
for doc in docs:
    print("-" * 80)
    print(doc.page_content, " ", doc.metadata)

5. 了解查询构建过程

了解内部查询的结构是诊断和优化系统性能的关键。

from langchain.chains.query_constructor.base import (
    StructuredQueryOutputParser,
    get_query_constructor_prompt,
)

prompt = get_query_constructor_prompt(
    document_content_description,
    metadata_field_info,
)
output_parser = StructuredQueryOutputParser.from_components()
query_constructor = prompt | llm | output_parser

sq = query_constructor.invoke(input=query_prompt)

print("Structured query: ", sq)
print("Translated for hana vector store: ", hana_translator.visit_structured_query(sq))

常见问题和解决方案

  • 网络连接问题:由于网络限制,建议开发者在请求API时考虑使用API代理服务,以提高访问的稳定性。
  • 数据库连接失败:确保环境变量正确配置并且网络连接可达。
  • 数据插入失败:检查表结构及数据格式是否匹配。

总结与进一步学习资源

本文详细介绍了SAP HANA Cloud Vector Engine的设置和自查询功能的实现。有关更深入的学习,可以参考以下资源:

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

—END—

标签:Engine,name,HANA,langchain,Vector,import,query,SAP
From: https://blog.csdn.net/hatjeagetju/article/details/144502775

相关文章

  • DataFlow Engine 数据流引擎 v9.6.7 发布
    DataFlowEngine数据流引擎v9.6.7发布来源:投稿作者: Gitee快讯2024-12-1315:01:00 0AI总结干不动了伙计们,老板说每天导它个5000App下载DataFlowEngine数据流引擎v9.6.7已经发布此版本更新内容包括:支持MYSQL、ORACLE、达梦、人大金仓、、Postg......
  • 揭秘Qdrant Sparse Vector:下一代文档检索的秘密武器
    #揭秘QdrantSparseVector:下一代文档检索的秘密武器##引言在当今的数据驱动世界中,快速和准确的信息检索是至关重要的。Qdrant是一个开源、高性能的向量搜索引擎/数据库,专为这一任务而生。最近,Qdrantv1.7.0引入了稀疏向量功能,为文档检索带来了新的可能性。这篇文章将......
  • Win10虚拟机安装Docker解决Docker Engine Stopped问题记录
    跟着网上的帖子开启WSL2安装DockerDesktop,但是无法启动Docker,一直【DockerEnginestopped】继续跟着网上的帖子解决问题,检查电脑各种配置都搞一通后还是无法解决。无法定位到问题出在哪个方面,恼凶成怒打算卸载,发现卸载也出现问题卸载不掉,,,,,,,,,,冷静下来,寻找问题关键点。......
  • The+finite+element+method+in+engineering+(Rao,+Singiresu+S)_含目录
    封面1第一部分引言91有限元方法概述101.1基本概念101.2历史背景101.3该方法的普遍适用性131.3.1一维热传递131.3.2一维流体流动151.3.3轴向受载的实心杆151.4有限元方法的工程应用151.5有限元方法的总体描述171.6采用线性......
  • TDengine Flink集成
    Flink集成TDengine主要涉及在Flink项目中配置与TDengine的连接,实现数据的读取和写入。以下是一个详细的指南,介绍如何在Flink中集成TDengine:一、准备工作安装并启动Flink:下载并解压Flink安装包。启动Flink集群,确保Flink正常运行。安装并配置TDengine:......
  • CryEngine引擎开发:优化与性能分析_渲染技术优化
    渲染技术优化在动作游戏开发中,渲染性能的优化至关重要。CryEngine引擎以其强大的图形渲染能力而闻名,但在实际开发过程中,如何充分利用其潜力,确保游戏在各种设备上都能流畅运行,是开发者需要面对的重要挑战。本节将详细介绍CryEngine引擎中渲染技术的优化方法,包括但不限于......
  • CryEngine引擎开发:优化与性能分析_移动端性能优化
    移动端性能优化在开发基于CryEngine的移动端动作游戏时,性能优化是一个至关重要的环节。移动端设备的硬件资源有限,特别是GPU和CPU性能,内存容量以及电池续航能力,这些都直接影响到游戏的流畅度和用户体验。本节将详细介绍如何在CryEngine中进行移动端性能优化,包括图形优化、内......
  • CryEngine引擎开发:优化与性能分析_游戏逻辑优化
    游戏逻辑优化在游戏开发中,游戏逻辑的优化对于提升整体性能至关重要。无论是单机游戏还是网络游戏,逻辑优化都能显著减少CPU和内存的消耗,提高游戏的流畅性和响应速度。本节将详细介绍CryEngine引擎中游戏逻辑优化的原理和方法,并通过具体实例来展示如何实现这些优化。1.代码......
  • CryEngine引擎开发:优化与性能分析_帧率与延迟优化
    帧率与延迟优化在开发高性能的动作游戏时,帧率(FPS,FramesPerSecond)和延迟(Latency)是两个至关重要的性能指标。帧率决定了游戏的流畅度,而延迟则影响了玩家的实时响应,这两个因素直接关系到玩家的游戏体验。本节将详细介绍如何在CryEngine引擎中优化帧率和降低延迟,通过具体的......
  • 禁用SAP Hana错误密码锁定用户功能
    背景公司项目适配多种数据库其中包含SAPHana,由于有同事的数据库连接工具保存了某个在用的数据库的旧密码,导致时不时会被锁用户。通过查询官方文档已解决,这里统一记录一下。禁用密码锁定方法以下按系统管理员和普通用户的解法分别列出。禁用SYSTEM管理员密码锁定查找安装Hana......