naval_bot = App()
# 添加在線數據
naval_bot.add("https://www.youtube.com/watch?v=3qHkcs3kG44")
naval_bot.add("https://navalmanack.s3.amazonaws.com/Eric-Jorgenson_The-Almanack-of-Naval-Ravikant_Final.pdf")
naval_bot.add("https://nav.al/feedback")
naval_bot.add("https://nav.al/agi")
naval_bot.add("The Meanings of Life", 'text', metadata={'chapter': 'philosphy'})

# 添加本地資源
naval_bot.add(("誰是海軍拉維坎特?", "納瓦爾·拉維坎特是一位印度裔美國企業家和投資者。"))

naval_bot.query("海軍認為人類在理解解釋或概念方面擁有哪些獨特的能力?")
# 答:海軍認為,人類擁有在這個物理現實中最大程度地理解解釋或概念的獨特能力。

2.1、基本原理圖片


Embedchain 為你抽象出以下步驟,以輕松創建 LLM 支持的應用程序:

  1. 檢測數據類型并加載數據
  2. 創建有意義的塊
  3. 為每個塊創建嵌入
  4. 將塊存儲在矢量數據庫中

當用戶提出查詢時,會發生以下過程來查找答案:

  1. 為查詢創建嵌入
  2. 從向量數據庫中查找與查詢相似的文檔
  3. 將類似文檔作為上下文傳遞給LLM以獲得最終答案

加載數據集和查詢的過程涉及多個步驟,每個步驟都有自己的細微差別:

Embedchain 照顧所有這些細微差別,并提供一個簡單的界面來在任何數據上創建應用程序。

?三、快速開始

快速安裝 embedchain:

pip install --upgrade embedchain

創建應用程序涉及 3 個步驟:

# 導入應用實例
import os
from embedchain import App

os.environ["OPENAI_API_KEY"] = "xxx"
elon_bot = App()

# 添加不同的數據源
elon_bot.add("https://en.wikipedia.org/wiki/Elon_Musk")
elon_bot.add("https://www.forbes.com/profile/elon-musk")
# 你還可以添加本地數據源,例如pdf、csv文件等。
# elon_bot.add("/path/to/file.pdf")

# 查詢你的數據并獲得答案
response = elon_bot.query("埃隆·馬斯克今天的凈資產是多少?")
print(response)
# 答:埃隆·馬斯克如今的凈資產是2587億美元。

四、大語言模型

Embedchain 內置了對各種流行的大型語言模型的支持。我們為你處理集成這些模型的復雜性,使你可以通過用戶友好的界面輕松自定義語言模型交互。

4.1、OpenAI圖片

要使用 OpenAI LLM 模型,您必須設置?OPENAI_API_KEY?環境變量。您可以從OpenAI平臺獲取OpenAI API密鑰。獲得密鑰后,您可以像這樣使用它:

import os
from embedchain import App

os.environ['OPENAI_API_KEY'] = 'xxx'

app = App()
app.add("https://en.wikipedia.org/wiki/OpenAI")
app.query("What is OpenAI?")

如果您希望配置 LLM 的不同參數,可以通過使用 yaml 配置文件加載應用程序來實現。

import os
from embedchain import App

os.environ['OPENAI_API_KEY'] = 'xxx'

# load llm configuration from config.yaml file
app = App.from_config(yaml_path="config.yaml")

# config.yaml
llm:
provider: openai
config:
model: 'gpt-3.5-turbo'
temperature: 0.5
max_tokens: 1000
top_p: 1
stream: false

4.2、Hugging Face圖片

使用以下命令安裝相關依賴:

pip install --upgrade 'embedchain[huggingface_hub]'

首先,在環境變量中設置?HUGGINGFACE_ACCESS_TOKEN?,您可以從他們的平臺獲取該環境變量。獲得令牌后,使用配置 yaml 文件加載應用程序:

import os
from embedchain import App

os.environ["HUGGINGFACE_ACCESS_TOKEN"] = "xxx"

# 從config. yaml文件加載llm配置
app = App.from_config(yaml_path="config.yaml")

# config.yaml
llm:
provider: huggingface
config:
model: 'google/flan-t5-xxl'
temperature: 0.5
max_tokens: 1000
top_p: 0.5
stream: false

五、Embedding 模型

Embedchain 支持以下提供商的多種嵌入模型

5.1、OpenAI圖片

要使用OpenAI嵌入功能,您必須設置?OPENAI_API_KEY?環境變量。您可以從OpenAI平臺獲取OpenAI API密鑰。獲得密鑰后,您可以像這樣使用它:

import os
from embedchain import App

os.environ['OPENAI_API_KEY'] = 'xxx'

# 從config. yaml文件加載嵌入模型配置
app = App.from_config(yaml_path="config.yaml")

app.add("https://en.wikipedia.org/wiki/OpenAI")
app.query("What is OpenAI?")

# config.yaml
embedder:
provider: openai
config:
model: 'text-embedding-ada-002'

5.2、Hugging Face圖片

Hugging Face 支持使用 Sentence Transformer 庫生成任意長度的文本文檔的嵌入。下面給出了如何使用擁抱臉生成嵌入的示例:

from embedchain import App

# 從config. yaml文件加載嵌入模型配置
app = App.from_config(yaml_path="config.yaml")

# config.yaml
llm:
provider: huggingface
config:
model: 'google/flan-t5-xxl'
temperature: 0.5
max_tokens: 1000
top_p: 0.5
stream: false

embedder:
provider: huggingface
config:
model: 'sentence-transformers/all-mpnet-base-v2'

六、向量數據庫

將矢量數據庫與 Embedchain 結合使用是一個無縫過程。你需要做的就是在 YAML 配置文件中配置它。我們為下面每個受支持的數據庫提供了示例:

6.1、ChromaDB圖片

from embedchain import App

# 從yaml文件加載色度配置
app = App.from_config(yaml_path="config1.yaml")

# config1.yaml
vectordb:
provider: chroma
config:
collection_name: 'my-collection'
dir: db
allow_reset: true

# config2.yaml
vectordb:
provider: chroma
config:
collection_name: 'my-collection'
host: localhost
port: 5200
allow_reset: true

6.2、Elasticsearch圖片

使用以下命令安裝相關依賴:

pip install --upgrade 'embedchain[elasticsearch]'
from embedchain import App

# 從yaml文件加載elasticsearch配置
app = App.from_config(yaml_path="config.yaml")

# config.yaml
vectordb:
provider: elasticsearch
config:
collection_name: 'es-index'
es_url: http://localhost:9200
allow_reset: true
api_key: xxx

6.3、OpenSearch圖片

使用以下命令安裝相關依賴:

pip install --upgrade 'embedchain[opensearch]'
from embedchain import App

# 從yaml文件加載opensearch配置
app = App.from_config(yaml_path="config.yaml")

# config.yaml
vectordb:
provider: opensearch
config:
opensearch_url: 'https://localhost:9200'
http_auth:
- admin
- admin
vector_dimension: 1536
collection_name: 'my-app'
use_ssl: false
verify_certs: false

6.4、Milvus圖片

使用以下命令安裝相關依賴:

pip install --upgrade 'embedchain[milvus]'

設置 Zilliz 環境變量?ZILLIZ_CLOUD_URI?和?ZILLIZ_CLOUD_TOKEN?,您可以在其云平臺上找到它。

import os
from embedchain import App

os.environ['ZILLIZ_CLOUD_URI'] = 'https://xxx.zillizcloud.com'
os.environ['ZILLIZ_CLOUD_TOKEN'] = 'xxx'# 從yaml文件加載zilliz配置
app = App.from_config(yaml_path="config.yaml")

# config.yaml
vectordb:
provider: zilliz
config:
collection_name: 'zilliz-app'
uri: https://xxxx.api.gcp-region.zillizcloud.com
token: xxx
vector_dim: 1536
metric_type: L2

6.5、Pinecone圖片

使用以下命令安裝pinecone相關依賴項:

pip install --upgrade 'embedchain[pinecone]'

為了使用 Pinecone 作為矢量數據庫,請設置環境變量?PINECONE_API_KEY?和?PINECONE_ENV?,您可以在 Pinecone 儀表板上找到它們。

from embedchain import App

# 從yaml文件加載松果配置
app = App.from_config(yaml_path="config.yaml")

# config.yaml
vectordb:
provider: pinecone
config:
metric: cosine
vector_dimension: 1536
collection_name: my-pinecone-index

6.6、Qdrant圖片

為了將 Qdrant 用作矢量數據庫,請設置環境變量?QDRANT_URL?和?QDRANT_API_KEY?,您可以在 Qdrant Dashboard 上找到它們。

from embedchain import App

# 從yaml文件加載qdrant配置
app = App.from_config(yaml_path="config.yaml")

# config.yaml
vectordb:
provider: qdrant
config:
collection_name: my_qdrant_index

七、數據源

Embedchain 內置了12種數據源的支持。我們處理從這些數據源加載非結構化數據的復雜性,使你可以通過用戶友好的界面輕松自定義你的應用程序。

7.1、CSV 文檔圖片

要添加任何 csv 文件,請將 data_type 用作?csv?。csv?允許遠程 URL 和常規文件路徑。每行都包含標題,因此如果你有?age?列,則?18?將添加為?age: 18?。例如:

from embedchain import App

app = App()
app.add('https://people.sc.fsu.edu/~jburkardt/data/csv/airtravel.csv', data_type="csv")
# 或者使用本地文件路徑添加
# app.add('/path/to/file.csv', data_type="csv")

app.query("總結航空旅行數據")
# 答:航空旅行數據顯示了1958年、1959年和1960年7月的航班數量。1958年7月有491個航班,1959年7月有548個航班,1960年7月有622個航班。

注意:csv 文件有一個大小限制,超過該限制可能會引發錯誤。該限制由LLM設定。請考慮將大型 csv 文件分成較小的 csv 文件。

7.2、代碼文檔圖片

要將任何代碼文檔網站添加為加載程序,請使用 data_type 作為?docs_site?。例如:

from embedchain import App

app = App()
app.add("https://docs.embedchain.ai/", data_type="docs_site")
app.query("什么是 Embedchain?")
# 答:Embedchain是一個平臺,它利用各種組件,包括付費/專有組件,來提供被認為是最好的配置。它使用LLM(語言模型)提供程序,如OpenAI、Anthproic、Vertex_AI、GPT4ALL、Azure_OpenAI、LLAMA2、JINA和COHere。嵌入式鏈允許用戶為他們的應用程序導入和利用這些LLM提供程序。'

其他支持的數據源類型就不一一列舉了,具體可以查閱官方文檔,基本上差異就是指定?data_type?屬性為文檔的類型即可。同時?add?方法既支持傳入在線URL地址,也支持傳入本地文檔地址。

data_type 可選值為:
csv
docs_site
docs
mdx
notion
pdf_file
qna_pair
sitemap
text
web_page
youtube_video

八、數據類型處理

8.1、自動數據類型檢測圖片

add 方法根據你對源參數的輸入自動嘗試檢測 data_type。因此 app.add('https://www.youtube.com/watch?v=dQw4w9WgXcQ') 足以嵌入 YouTube 視頻。此檢測適用于所有格式。它基于是否是 URL、本地文件、源數據類型等因素。

8.1.1、調試自動檢測

在配置yaml中設置 log_level: DEBUG 來調試數據類型檢測是否正確。否則,你將不知道何時將無效的文件路徑解釋為原始文本。

8.1.2、強制數據類型

要忽略數據類型檢測的任何問題,你可以通過將 data_type 添加為?add?方法參數來強制使用它。下面的示例向你展示了強制相應?data_type?的關鍵字。強制還可以用于邊緣情況,例如將站點地圖解釋為網頁,以讀取其原始文本而不是跟隨鏈接。

8.2、遠程數據類型圖片

在遠程數據類型中使用本地文件某些 data_types 適用于遠程內容并且僅適用于 URL。你可以通過使用?file:?URI 方案格式化路徑來傳遞本地文件,例如?file:///info.pdf?。

8.3、重用向量數據庫圖片

默認情況下,會在./db目錄中創建一個持久化的向量數據庫。您可以將應用程序拆分為兩個Python腳本:一個用于創建本地的向量數據庫,另一個用于重用這個本地的持久化向量數據庫。當您想要對數百個文檔進行索引,并單獨實現聊天界面時,這非常有用。

from embedchain import App

naval_chat_bot = App()
naval_chat_bot.add("https://www.youtube.com/watch?v=3qHkcs3kG44")
naval_chat_bot.add("https://navalmanack.s3.amazonaws.com/Eric-Jorgenson_The-Almanack-of-Naval-Ravikant_Final.pdf")

你可以使用相同的代碼重用本地索引,但無需添加新文檔:

from embedchain import App

naval_chat_bot = App()print(naval_chat_bot.query("海軍認為人類在理解解釋或概念方面擁有哪些獨特的能力?"))

九、自定義配置

Embedchain 開箱即用。對于高級用戶,還提供配置選項。這些配置選項都是可選的并且具有合理的默認值。你可以通過 Embedchain 提供的簡單 yaml 配置來配置應用程序的不同組件(?llm?、?embedding model?或?vector database?)。以下是 yaml 配置的通用全棧示例:

app:
config:
id: 'full-stack-app'

llm:
provider: openai
config:
model: 'gpt-3.5-turbo'
temperature: 0.5
max_tokens: 1000
top_p: 1
stream: false
template: |
最后使用以下上下文來回答查詢。
如果你不知道答案,就說你不知道,不要試圖編造答案。

$context

Query: $query

Helpful Answer:
system_prompt: |
扮演威廉·莎士比亞。以威廉·莎士比亞的風格回答以下問題。

vectordb:
provider: chroma
config:
collection_name: 'full-stack-app'
dir: db
allow_reset: true

embedder:
provider: openai
config:
model: 'text-embedding-ada-002'

針對上面 yaml 配置中每個鍵的含義解釋如下:

app 部分:
config:
id (字符串):全棧應用程序的 ID 或名稱。
llm 部分:
provider (字符串):語言模型的提供者,設置為“openai”。你可以在我們的文檔中找到 llm 提供商的完整列表。
model (字符串):正在使用的特定型號,“gpt-3.5-turbo”。
config:
temperature (Float):控制模型輸出的隨機性。較高的值(接近 1)使輸出更加隨機。
max_tokens (整數):控制響應中使用的令牌數量。
top_p (Float):控制單詞選擇的多樣性。較高的值(接近 1)使單詞選擇更加多樣化。
stream (布爾值):控制是否將響應流式傳輸回用戶(設置為 false)。
template (字符串):模型用于生成響應的提示的自定義模板。
system_prompt (字符串):模型在生成響應時遵循的系統提示,在本例中,它設置為莎士比亞的風格。
vectordb 部分:
provider (字符串):矢量數據庫的提供者,設置為“色度”。你可以在我們的文檔中找到矢量數據庫提供商的完整列表。
config:
collection_name (字符串):數據庫的初始集合名稱,設置為“full-stack-app”。
dir (字符串):數據庫的目錄,設置為“db”。
allow_reset (布爾值):表示是否允許重置數據庫,設置為true。
embedder 部分:
provider (字符串):嵌入器的提供者,設置為“openai”。你可以在我們的文檔中找到嵌入模型提供程序的完整列表。
config:
model (字符串):用于文本嵌入的特定模型,“text-embedding-ada-002”。

本文章轉載微信公眾號@技術狂潮AI

上一篇:

LangChain + GPT :總結長文本

下一篇:

基于 InternLM 和LangChain搭建你的知識庫
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費