Skip to main content

AnalyticDB

AnalyticDB for PostgreSQL是一种用于在线分析大数据的大规模并行处理(MPP)数据仓库服务。

AnalyticDB for PostgreSQL是基于开源项目Greenplum Database开发的,并由阿里云进行了深度扩展。AnalyticDB for PostgreSQL兼容ANSI SQL 2003语法以及PostgreSQL和Oracle数据库生态系统。AnalyticDB for PostgreSQL还支持行存储和列存储。AnalyticDB for PostgreSQL以高性能水平离线处理PB级数据,并支持高并发的在线查询。

本笔记本展示了如何使用与AnalyticDB向量数据库相关的功能。 要运行此笔记本,您应该拥有正在运行的AnalyticDB实例:

from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import AnalyticDB

通过调用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()

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

export PG_HOST={your_analyticdb_hostname}
export PG_PORT={your_analyticdb_port} # 可选,默认为5432
export PG_DATABASE={your_database} # 可选,默认为postgres
export PG_USER={database_username}
export PG_PASSWORD={database_password}

然后将嵌入向量和文档存储到AnalyticDB中

import os

connection_string = AnalyticDB.connection_string_from_db_params(
driver=os.environ.get("PG_DRIVER", "psycopg2cffi"),
host=os.environ.get("PG_HOST", "localhost"),
port=int(os.environ.get("PG_PORT", "5432")),
database=os.environ.get("PG_DATABASE", "postgres"),
user=os.environ.get("PG_USER", "postgres"),
password=os.environ.get("PG_PASSWORD", "postgres"),
)

vector_db = AnalyticDB.from_documents(
docs,
embeddings,
connection_string=connection_string,
)

查询和检索数据

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

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

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

我在4天前做到了这一点,当时我提名了巡回上诉法院法官Ketanji Brown Jackson。她是我们国家顶级的法律专家,将继续布雷耶法官的卓越传统。