跳至主要內容

SurrealDB

SurrealDB 是一個端到端雲原生資料庫,專為現代應用程式設計,包括 Web、行動、無伺服器、Jamstack、後端和傳統應用程式。 使用 SurrealDB,您可以簡化資料庫和 API 基礎設施,縮短開發時間,並快速且經濟高效地建構安全、高效能的應用程式。

SurrealDB 的主要功能包括

  • 縮短開發時間: SurrealDB 透過消除對大多數伺服器端組件的需求來簡化您的資料庫和 API 堆疊,使您能夠更快、更便宜地建構安全、高效能的應用程式。
  • 即時協作 API 後端服務: SurrealDB 既可用作資料庫,也可用作 API 後端服務,從而實現即時協作。
  • 支援多種查詢語言: SurrealDB 支援從客戶端設備進行 SQL 查詢、GraphQL、ACID 交易、WebSocket 連接、結構化和非結構化資料、圖形查詢、全文索引和地理空間查詢。
  • 細微的存取控制: SurrealDB 提供基於行級權限的存取控制,讓您能夠精確地管理資料存取。

查看功能、最新的版本文件

本筆記展示了如何使用與 SurrealDBStore 相關的功能。

設定

取消註釋下面的儲存格以安裝 surrealdb。

# %pip install --upgrade --quiet  surrealdb langchain langchain-community

使用 SurrealDBStore

# add this import for running in 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)

model_name = "sentence-transformers/all-mpnet-base-v2"
embeddings = HuggingFaceEmbeddings(model_name=model_name)

建立 SurrealDBStore 物件

db = SurrealDBStore(
dburl="ws://127.0.0.1:8000/rpc", # url for the hosted SurrealDB database
embedding_function=embeddings,
db_user="root", # SurrealDB credentials if needed: db username
db_pass="root", # SurrealDB credentials if needed: db password
# ns="langchain", # namespace to use for vectorstore
# db="database", # database to use for vectorstore
# collection="documents", #collection to use for vectorstore
)

# this is needed to initialize the underlying async library for SurrealDB
await db.initialize()

# delete all existing documents from the vectorstore collection
await db.adelete()

# add documents to the vectorstore
ids = await db.aadd_documents(docs)

# document ids of the added documents
ids[:5]
['documents:38hz49bv1p58f5lrvrdc',
'documents:niayw63vzwm2vcbh6w2s',
'documents:it1fa3ktplbuye43n0ch',
'documents:il8f7vgbbp9tywmsn98c',
'documents:vza4c6cqje0avqd58gal']

(或者)建立 SurrealDBStore 物件並新增文件

await db.adelete()

db = await SurrealDBStore.afrom_documents(
dburl="ws://127.0.0.1:8000/rpc", # url for the hosted SurrealDB database
embedding=embeddings,
documents=docs,
db_user="root", # SurrealDB credentials if needed: db username
db_pass="root", # SurrealDB credentials if needed: db password
# ns="langchain", # namespace to use for vectorstore
# db="database", # database to use for vectorstore
# collection="documents", #collection to use for vectorstore
)
query = "What did the president say about Ketanji Brown Jackson"
docs = await db.asimilarity_search(query)
print(docs[0].page_content)
Tonight. I call on the Senate to: Pass the Freedom to Vote Act. Pass the John Lewis Voting Rights Act. And while you’re at it, pass the Disclose Act so Americans can know who is funding our elections. 

Tonight, I’d like to honor someone who has dedicated his life to serve this country: Justice Stephen Breyer—an Army veteran, Constitutional scholar, and retiring Justice of the United States Supreme Court. Justice Breyer, thank you for your service.

One of the most serious constitutional responsibilities a President has is nominating someone to serve on the United States Supreme Court.

And I did that 4 days ago, when I nominated Circuit Court of Appeals Judge Ketanji Brown Jackson. One of our nation’s top legal minds, who will continue Justice Breyer’s legacy of excellence.

帶分數的相似性搜尋

返回的距離分數是餘弦距離。 因此,分數越低越好。

docs = await db.asimilarity_search_with_score(query)
docs[0]
(Document(page_content='Tonight. I call on the Senate to: Pass the Freedom to Vote Act. Pass the John Lewis Voting Rights Act. And while you’re at it, pass the Disclose Act so Americans can know who is funding our elections. \n\nTonight, I’d like to honor someone who has dedicated his life to serve this country: Justice Stephen Breyer—an Army veteran, Constitutional scholar, and retiring Justice of the United States Supreme Court. Justice Breyer, thank you for your service. \n\nOne of the most serious constitutional responsibilities a President has is nominating someone to serve on the United States Supreme Court. \n\nAnd I did that 4 days ago, when I nominated Circuit Court of Appeals Judge Ketanji Brown Jackson. One of our nation’s top legal minds, who will continue Justice Breyer’s legacy of excellence.', metadata={'id': 'documents:slgdlhjkfknhqo15xz0w', 'source': '../../how_to/state_of_the_union.txt'}),
0.39839531721941895)

此頁面是否有幫助?