Skip to main content

Hologres

Hologres 是由阿里云开发的统一实时数据仓库服务。您可以使用 Hologres 实时编写、更新、处理和分析大量数据。 Hologres 支持标准 SQL 语法,与 PostgreSQL 兼容,并支持大多数 PostgreSQL 函数。Hologres 支持高达 PB 级的数据的在线分析处理(OLAP)和即席分析,并提供高并发和低延迟的在线数据服务。

Hologres 通过采用 Proxima 提供向量数据库功能。 Proxima 是由阿里巴巴达摩院开发的高性能软件库。它允许您搜索向量的最近邻居。Proxima 提供比 Faiss 等类似开源软件更高的稳定性和性能。Proxima 允许您以高吞吐量和低延迟搜索相似的文本或图像嵌入。Hologres 与 Proxima 深度集成,提供高性能的向量搜索服务。

本笔记本展示了如何使用与 Hologres Proxima 向量数据库相关的功能。 点击这里快速部署 Hologres 云实例。

#!pip install psycopg2
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import Hologres

通过调用 OpenAI API 拆分文档并获取嵌入

from langchain.document_loaders import TextLoader

loader = TextLoader("../../../state_of_the_union.txt")
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs = text_splitter.split_documents(documents)

embeddings = OpenAIEmbeddings()

通过设置相关环境变量连接到 Hologres。

export PG_HOST={host}
export PG_PORT={port} # 可选,默认为 80
export PG_DATABASE={db_name} # 可选,默认为 postgres
export PG_USER={username}
export PG_PASSWORD={password}

然后将嵌入和文档存储到 Hologres 中

import os

connection_string = Hologres.connection_string_from_db_params(
host=os.environ.get("PGHOST", "localhost"),
port=int(os.environ.get("PGPORT", "80")),
database=os.environ.get("PGDATABASE", "postgres"),
user=os.environ.get("PGUSER", "postgres"),
password=os.environ.get("PGPASSWORD", "postgres"),
)

vector_db = Hologres.from_documents(
docs,
embeddings,
connection_string=connection_string,
table_name="langchain_example_embeddings",
)

查询和检索数据

query = "What did the president say about Ketanji Brown Jackson"
docs = vector_db.similarity_search(query)
print(docs[0].page_content)
    今晚。我呼吁参议院:通过《自由投票法案》。通过《约翰·刘易斯选举权法案》。而且,顺便说一句,通过《披露法案》,这样美国人就可以知道谁在资助我们的选举了。

今晚,我想向一个致力于为这个国家服务的人表示敬意:司法部长斯蒂芬·布雷耶——一位陆军退伍军人、宪法学者和即将退休的美国最高法院法官。布雷耶法官,感谢您的服务。

总统最重要的宪法责任之一是提名人选担任美国最高法院法官。

我在4天前做到了这一点,当时我提名了巡回上诉法院法官凯坦吉·布朗·杰克逊。她是我们国家顶级的法律智慧之一,将继续布雷耶法官的卓越传统。