0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【LangChain】OpenAIEmbeddingsの利用方法

0
Last updated at Posted at 2025-09-23

RAGの勉強のため,langchain-openaiパッケージのOpenAIEmbeddingsの利用方法をまとめた.

設定

OpenAIのアカウントを持っていない場合は,作成が必要.OpenAIのAPI Keyを作成する.
langchain-openaiパッケージをインストール.

pip install langchain-openai

インスタンス化

from langchain_openai import OpenAIEmbeddings

embeddings = OpenAIEmbeddings(
    model="text-embedding-3-large"
)

text-embedding-3-modelでは,返される埋め込みのサイズを指定できる.他のモデルは以下.

モデル名 特徴 埋め込み次元
text-embedding-3-small 軽量・低コスト 1536
text-embedding-3-large 高性能モデル 3072
text-embedding-ada-002 旧モデル.まだ利用可能だが非推奨. 1536

索引付けと検索

埋め込みを使って索引付け・検索する方法.サンプルテキストをInMemoryVectorStoreにベクトルとして保持させる.このとき,InMemoryVectorStoreの利用のため,langchain-coreのインストールが必要.

pip install langchain-core

※ InMemoryVectorStore: 簡易なベクトル検索機能をメモリ上で提供するクラス

# Create a vector store with a sample text
from langchain_core.vectorstores import InMemoryVectorStore

text = "LangChain is the framework for building context-aware reasoning applications"

vectorstore = InMemoryVectorStore.from_texts(
    [text],
    embedding=embeddings,
)

# Use the vectorstore as a retriever
retriever = vectorstore.as_retriever()

# Retrieve the most similar text
retrieved_documents = retriever.invoke("What is LangChain?")

# show the retrieved document's content
retrieved_documents[0].page_content

主なメソッドの説明

メソッド 説明
from_texts(texts, embedding[, metadatas]) textsとembeddingsによって初期化されたVectorStoreを返す
as_retriever(**kwargs) そのVectorStoreによって初期化されたVectorStoreRetrieverを返す

主なインターフェースの説明

インターフェース 説明
VectorStore テキストなどのデータをベクトル化して格納し,類似度検索を行うための抽象的なインターフェース.
Retriever クエリを入力すると,関連する文書を返してくれるシンプルなインターフェース.as_retrieverを利用してVectorStoreをRetrieverとして使うケースが多い (内部的にはsimilarity_search()を呼び出しているだけ).

上記の実行結果,APIによる参照は以下のようになる.

'LangChain is the framework for building context-aware reasoning applications'

直接利用

VectorStoreとRetrieverについて,from_textsやinvoke操作時に,内部ではembeddings.embed_documents(...) とembeddings.embed_query(...) が呼び出されている.これらのメソッドを直接呼び出すことで独自のユースケース向けに埋め込みを取得することができる.

単一のテキストを埋め込む

一つのテキストだけ埋め込み表現を取得したい場合の例が以下のコード.embed_queryを使ってtextの埋め込みを取得.

single_vector = embeddings.embed_query(text)
print(str(single_vector)[])  

埋め込み表現の前方100文字を取得すると以下のようになる.

[-0.019276829436421394, 0.0037708976306021214, -0.03294256329536438, 0.0037671267054975033, 0.008175

複数のテキストを埋め込む

複数のテキストで埋め込み表現を取得した場合の例が以下のコード.embed_documentsを使ってtextとtext2の埋め込みを取得.

text2 = (
    "LangGraph is a library for building stateful, multi-actor applications with LLMs"
)
two_vectors = embeddings.embed_documents([text, text2])
for vector in two_vectors:
    print(str(vector)[])

埋め込み表現の前方100文字を取得すると以下のようになる.

[-0.019260549917817116, 0.0037612367887049913, -0.03291035071015358, 0.003757466096431017, 0.0082049
[-0.010181212797760963, 0.023419594392180443, -0.04215526953339577, -0.001532090245746076, -0.023573

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?