跳到主要内容

检索器

在语言或框架中,特别是在区块链上下文中,“检索器”这一概念指的是用于从指定来源提取或获取数据的机制。在区块链领域,这可能涉及从区块链账本中检索交易详情、区块信息或智能合约的状态。

使用检索器的原因:

  • 数据可访问性:为存储在区块链上的数据提供一个访问途径,对于需要向用户展示这些信息或将它们用于进一步处理的应用程序来说至关重要。
  • 效率:优化获取数据的过程,减少延迟并提升区块链应用程序的性能。
  • 抽象化:通过隐藏其底层复杂性来简化查询区块链的操作,为开发人员提供更简洁的API接口。
  • 集成:使将区块链数据无缝整合到其他应用或服务中成为可能,拓宽潜在的应用场景和功能。
  • 安全性:允许应用程序安全地访问区块链数据而不直接与账本进行交互,从而减少暴露于安全风险中的可能性。

如何使用

检索器的实现根据区块链平台及具体的数据需求而有所不同。然而,一般过程包括以下步骤:

你需要使用一个嵌入器,例如ollama、huggingface等。

	llm, err := ollama.New(ollama.WithModel("llama2"))

if err != nil {
log.Fatal(err)
}

embedder, err := embeddings.NewEmbedder(llm)
if err != nil {
log.Fatal(err)
}

接下来选择一个向量存储,例如pinecone、postgres、Qdrant等,在这里我将使用qdrant

	url, err := url.Parse("http://localhost:6333")
if err != nil {
log.Fatal(err)
}

store, err := qdrant.New(
qdrant.WithURL(*url),
qdrant.WithCollectionName("youtube_transcript"),
qdrant.WithEmbedder(embedder),
)
if err != nil {
log.Fatal(err)
}

现在创建一个检索器

	searchQuery := "如何制作蛋糕"

// 使用基本配置创建检索器
retriever := vectorstores.ToRetriever(store, 10)

// 搜索相关文档
resDocs, err := retriever.GetRelevantDocuments(context.Background(), searchQuery)
if err != nil {
log.Fatal(err)
}

这是一个使用检索器的简单示例,你可以用它来实现许多功能,例如聊天机器人、搜索引擎或推荐系统等。