
如何用AI進行情感分析
Embedchain 為你抽象出以下步驟,以輕松創建 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 內置了對各種流行的大型語言模型的支持。我們為你處理集成這些模型的復雜性,使你可以通過用戶友好的界面輕松自定義語言模型交互。
要使用 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
使用以下命令安裝相關依賴:
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
Embedchain 支持以下提供商的多種嵌入模型:
要使用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'
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 配置文件中配置它。我們為下面每個受支持的數據庫提供了示例:
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
使用以下命令安裝相關依賴:
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
使用以下命令安裝相關依賴:
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
使用以下命令安裝相關依賴:
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
使用以下命令安裝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
為了將 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種數據源的支持。我們處理從這些數據源加載非結構化數據的復雜性,使你可以通過用戶友好的界面輕松自定義你的應用程序。
要添加任何 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 文件。
要將任何代碼文檔網站添加為加載程序,請使用 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
add 方法根據你對源參數的輸入自動嘗試檢測 data_type。因此 app.add('
https://www.youtube.com/watch?v=dQw4w9WgXcQ')
足以嵌入 YouTube 視頻。此檢測適用于所有格式。它基于是否是 URL、本地文件、源數據類型等因素。
在配置yaml中設置 log_level: DEBUG
來調試數據類型檢測是否正確。否則,你將不知道何時將無效的文件路徑解釋為原始文本。
要忽略數據類型檢測的任何問題,你可以通過將 data_type 添加為?add
?方法參數來強制使用它。下面的示例向你展示了強制相應?data_type
?的關鍵字。強制還可以用于邊緣情況,例如將站點地圖解釋為網頁,以讀取其原始文本而不是跟隨鏈接。
在遠程數據類型中使用本地文件某些 data_types 適用于遠程內容并且僅適用于 URL。你可以通過使用?file:
?URI 方案格式化路徑來傳遞本地文件,例如?file:///info.pdf
?。
默認情況下,會在./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