なぜ
新しいパソコンを買ったので、流行りの生成AIをローカルで作ってみた。
やったこと
chatgptに聞きながら、最小構成でのコードを動かす。
実際のコード
from openai import OpenAI
from langchain_community.vectorstores import Chroma
from langchain.docstore.document import Document
# LM Studio APIクライアント
client = OpenAI(base_url="http://localhost:1234/v1", api_key="not-needed")
model_name = "text-embedding-nomic-embed-text-1.5"
# 埋め込みラッパークラス
class LMStudioEmbedding:
def embed_documents(self, texts):
return [client.embeddings.create(model=model_name, input=t).data[0].embedding for t in texts]
def embed_query(self, text):
return self.embed_documents([text])[0]
embedding_fn = LMStudioEmbedding()
# データ
docs = [
Document(page_content="横浜は港町で、みなとみらいには観覧車がある。"),
Document(page_content="AWSのIAMロールは、人が一時的に引き受ける(Assume)仕組み。"),
Document(page_content="CIDRは可変長サブネットマスクでアドレスを表す方式。"),
]
# Chromaに投入
vectordb = Chroma.from_documents(docs, embedding=embedding_fn, collection_name="demo-lms")
print("✅ Vector store built.")
# 類似検索
hits = vectordb.similarity_search("IAMって何?", k=2)
for i, h in enumerate(hits, 1):
print(f"[{i}] {h.page_content}")
実行結果
(venv) PS C:\workspace\llm> c:; cd 'c:\workspace\llm'; & 'c:\workspace\llm\venv\Scripts\python.exe' 'c:\Users\hoge\.vscode\extensions\ms-python.debugpy-2025.10.0-win32-arm64\bundled\libs\debugpy\launcher' '52954' '--' 'C:\workspace\llm\src\second_test.py'
✅ Vector store built.
[1] 横浜は港町で、みなとみらいには観覧車がある。
[2] AWSのIAMロールは、人が一時的に引き受ける(Assume)仕組み。
(venv) PS C:\workspace\llm>
みなとみらいのほうがAWSより上に来るのは謎だが、結果は出た。
前準備
- 必要パッケージの用意
pip install -U openai langchain-community chromadb
- LM Studio 側の準備
- LM Studioのインストール
下記のサイトから自分のOSに合わせたインストーラをダウンロードしてインストール
https://lmstudio.ai/ - 適当なembeddingモデルをダウンロード
今回は下記をダウンロード
text-embedding-nomic-embed-text-1.5
- ローカルサーバで起動
下記のような形でサーバとして起動。
- サーバとの通信の確認
下記を実行。
なんかたくさん数字が入ったJSONが返ってくればOK。下記のような画面。結果は長いので抜粋。curl http://127.0.0.1:1234/v1/embeddings ^ -H "Content-Type: application/json" ^ -d "{ \"model\": \"text-embedding-nomic-embed-text-1.5\", \"input\": \"Some text to embed\"}"
- LM Studioのインストール