引言
在当今信息爆炸的时代,如何有效地处理和查询非结构化数据成为一个重要挑战。Oracle AI向量搜索通过语义查询,而非简单的关键词匹配,提供了令人耳目一新的解决方案。这篇文章将引导您如何使用Oracle AI向量搜索的文档处理功能,探索如何在Oracle数据库中加载和分块文档。
主要内容
Oracle AI向量搜索的优势
Oracle AI向量搜索不仅可以在同一系统中结合语义搜索和关系数据的查询,还利用了Oracle数据库的一系列强大功能,如分区支持、集群可扩展性等。这使得数据处理更加高效,避免了数据在多个系统间的碎片化。
环境准备
在开始之前,请确保您已经安装Oracle Python客户端驱动程序,以便通过Langchain使用Oracle AI向量搜索。可以使用以下命令安装:
# pip install oracledb
连接Oracle数据库
以下代码示例展示了如何连接到Oracle数据库。根据具体需求,您可以选择使用“Thin”模式或者“Thick”模式进行连接。
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, "Document text 1."),
(2, "Document text 2."),
(3, "Document text 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
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 Text Supported Document Formats以获取详细信息。
总结和进一步学习资源
通过本文,您学习了如何在Oracle数据库中使用Oracle AI向量搜索进行文档处理。进一步探索可以参考以下资源:
参考资料
- Oracle 官方文档
- Langchain 使用手册
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—