Oracle AI Vector Search 是一个功能强大的AI工具,允许您基于语义而非关键词进行数据查询。它的一个显著优势是能够在一个系统中将非结构化数据的语义搜索与业务数据的关系型搜索相结合。这不仅提升了效率,还减少了数据在多个系统之间分散的问题。
Oracle AI Vector Search 提供了一系列强大的功能,例如分区支持、异地分片处理、并行SQL,以及灾难恢复和安全性等。这些功能使其成为处理大型、复杂数据集的理想选择。
在本文中,我们将演示如何利用 Oracle AI Vector Search 的文档处理能力,使用 OracleDocLoader 和 OracleTextSplitter 加载和分块文档。
连接到 Oracle 数据库
首先,我们需要连接到 Oracle 数据库。使用 python-oracledb
包可以方便地实现这一目标。以下代码展示了如何进行连接:
import sys
import oracledb
# 更新为您的用户名、密码、主机名和服务名
username = "<username>"
password = "<password>"
dsn = "<hostname>/<service_name>"
try:
conn = oracledb.connect(user=username, password=password, dsn=dsn)
print("Connection successful!")
except Exception as e:
print("Connection failed!")
sys.exit(1)
创建表并插入文档
接下来,我们将在数据库中创建一个表,并插入一些样本文档,以便进行测试:
try:
cursor = conn.cursor()
drop_table_sql = """drop table if exists demo_tab"""
cursor.execute(drop_table_sql)
create_table_sql = """create table demo_tab (id number, data clob)"""
cursor.execute(create_table_sql)
insert_row_sql = """insert into demo_tab values (:1, :2)"""
rows_to_insert = [
(1, "文本内容 1。"),
(2, "文本内容 2。"),
(3, "文本内容 3。"),
]
cursor.executemany(insert_row_sql, rows_to_insert)
conn.commit()
print("Table created and populated.")
cursor.close()
except Exception as e:
print("Table creation failed.")
cursor.close()
conn.close()
sys.exit(1)
加载文档
使用 OracleDocLoader
可以从 Oracle 数据库、文件系统或两者中加载文档。以下代码展示了如何从数据库表中加载文档:
from langchain_community.document_loaders.oracleai import OracleDocLoader
# 从 Oracle 数据库表加载
loader_params = {
"owner": "<owner>",
"tablename": "demo_tab",
"colname": "data",
}
# 加载文档
loader = OracleDocLoader(conn=conn, params=loader_params)
docs = loader.load()
# 验证加载
print(f"Number of docs loaded: {len(docs)}")
分块文档
为了便于生成嵌入,常常需要将文档分块。下面展示了如何使用 OracleTextSplitter
来分块文档:
from langchain_community.document_loaders.oracleai import OracleTextSplitter
# 使用默认参数进行分块
splitter_params = {"normalize": "all"}
# 获取分块实例
splitter = OracleTextSplitter(conn=conn, params=splitter_params)
list_chunks = []
for doc in docs:
chunks = splitter.split_text(doc.page_content)
list_chunks.extend(chunks)
# 验证分块
print(f"Number of Chunks: {len(list_chunks)}")
应用场景分析
Oracle AI Vector Search 可用于各类场景,如在企业中进行复杂的文档检索、增强的客户服务搜索,以及支持 AI 驱动的分析。通过结合强大的数据库功能和先进的 AI 搜索技术,企业可以显著提升数据处理和分析能力。
实践建议
- 在初期学习 Oracle 数据库时,可以考虑使用 Oracle 23 AI 进行环境设置。
- 创建自己的数据库用户以提高安全性,而不是使用默认的系统用户。
- 理解用户权限的重要性,以便更有效地管理数据库安全。
如果遇到问题欢迎在评论区交流。
—END—