今日のデータ主導の世界では、企業や開発者は多くの場合、強力なテキスト検索機能を実装する必要があります。従来の検索アルゴリズムでは、大量の非構造化テキスト データを処理する場合、最適な結果が得られない場合があります。ここで、Pinecone、Langchain、OpenAI サービスが活躍します。このブログ投稿では、これらのツールをセットアップして活用し、高精度で効率的なテキスト検索システムを構築するために必要な手順について説明します。
ステップ 1: インデックスを設定する
まず、Pinecone にインデックスを設定する必要があります。pinecone-client、openai、tiktoken などの必要な Python パッケージをインストールします。次に、次のコード スニペットに進みます。
import pinecone
pinecone.init(api_key="YOUR_API_KEY", environment="YOUR_ENVIRONMENT")
pinecone.create_index("langchain-demo", dimension=1536, metric="cosine")
出力ディメンションが 1536 である「text-embedding-ada-002」OpenAI モデルを使用するため、ディメンション パラメーターは 1536 に設定されます。インデックスを削除する必要がある場合は、pinecone.delete_index("langchain-demo")
コマンドを使用します。
ステップ 2: ライブラリをインポートしてキーを設定する
次に、必要なライブラリをインポートし、必要なキーを設定する必要があります。次のライブラリをインポートします。
import os
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import Pinecone
from langchain.document_loaders import TextLoader
PINECONE_API_KEY 変数と PINECONE_ENV 変数を Pinecone API キーと環境に設定します。また、OPENAI_API_KEY 環境変数を OpenAI API キーに設定します。
os.environ["OPENAI_API_KEY"] = 'your openai api key'
ステップ 3: データと埋め込みレイヤーを準備する
次に、テキスト データを読み込み (ここでは例を使用します)、OpenAI サービスを使用して埋め込みレイヤーを準備します。Langchain の TextLoader クラスを使用してテキスト データをロードします。
loader = TextLoader("state_of_the_union.txt")
documents = loader.load()
次に、CharacterTextSplitter クラスを使用して、ドキュメントを小さなチャンクに分割します。
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs = text_splitter.split_documents(documents)
最後に、OpenAI 埋め込みを初期化します。
embeddings = OpenAIEmbeddings()
ステップ 4: ドキュメントを分割し、埋め込みベクトルにインデックスを付ける
このステップでは、ドキュメントを小さな部分に分割し、Pinecone を使用して OpenAI 埋め込みベクトルのインデックスを作成します。次のコード スニペットを使用します。
import pinecone
pinecone.init(
api_key=PINECONE_API_KEY,
environment=PINECONE_ENV,
)
index_name = "langchain-demo"
docsearch = Pinecone.from_documents(docs, embeddings, index_name=index_name)
query = "What did the president say about Ketanji Brown Jackson"
docs = docsearch.similarity_search(query)
print(docs[0].page_content)
ステップ 5: インデックスにテキストを追加する
既存のインデックスにテキストを追加するか、空のインデックスから開始するには、次のコード スニペットを使用します。
index = pinecone.Index("langchain-demo")
vectorstore = Pinecone(index, embeddings.embed_query, "text")
vectorstore.add_texts(["More text to add as an example!"])
メタデータをインデックスに追加する必要がある場合は、テキストを含む辞書のリストをインデックスに渡すことができます。
vectorstore.add_texts(["More text to add as an example!"], [{'name':'example'}])
結論は:
これらの手順に従うことで、Pinecone、Langchain、OpenAI サービスを使用して強力なテキスト検索システムを構築できます。これらのツールを使用すると、高度なテキスト埋め込み機能とインデックス作成機能を活用して、高精度かつ効率的な検索結果を得ることができます。大量のドキュメントを検索する必要がある場合でも、レコメンデーション システムを実装する必要がある場合でも、これらのツールを組み合わせることで、アプリケーションのパフォーマンスとユーザー エクスペリエンスを大幅に向上させることができます。
読む
AIのおすすめ本
AIは日々変化していますが、高層ビルは良好な基礎から切り離すことはできません。人工知能の原理と実践について学ぶことに興味がありますか? これ以上探さない!AI の原則と実践に関する書籍は、AI の世界について詳しく知りたい人にとって最適なリソースです。この分野の第一線の専門家によって書かれたこの包括的なガイドは、機械学習の基礎からインテリジェント システムを構築するための高度なテクニックまですべてをカバーしています。初心者であろうと経験豊富な AI 実践者であろうと、この本はあなたをカバーします。では、なぜ待つのでしょうか?
人工知能の原理と実践は、人工知能とデータ サイエンスのさまざまな重要なシステムの古典を包括的にカバーしています。
北京大学出版局、人工知能の原理と実践 人工知能とデータ サイエンスの入門から熟練度まで 機械学習ディープ ラーニング アルゴリズムの原理の詳細な説明