Asopitech With · カスタマーサポート
Zendesk with Alopex DB
Zendeskは、顧客からの問い合わせを受けて解決するカスタマーサポートのサービスです。Alopex DBで同じものを作るとしたら…?
更新: 2026/10/12
どんなサービスか
Zendeskは、顧客からの問い合わせを受けて解決するサポートのサービスです。問い合わせはチケットとして管理し、ナレッジベースの記事から答えを探して返します。扱うデータは、チケット、顧客、やりとり、ナレッジの記事です。
データの置き場所
- SQLテーブル:チケット、顧客、担当者、やりとりをテーブルに持ちます。
- 全文検索:記事とやりとりに全文検索の索引を張り、製品名やエラーの文言で探します。
- ベクトル:記事と過去の回答の埋め込みをベクトル列に持ち、新しい問い合わせに近い答えを探します。
- カラムナーテーブル:チケットの記録をカラムナーテーブルにも持ち、解決までの時間を集計します。
埋め込みの計算と、答えの文章を組み立てるのは、アプリのコードです。
配置の形
Alopex DBをサーバーとして動かし、担当者の画面とヘルプセンターにHTTPとgRPCで返します。
Alopex DBが合う理由
サポートの答えは、過去の問い合わせとナレッジの中にあります。Alopex DBは、チケット、記事、意味検索を1つのデータベースに持ち、新しい問い合わせに近い答えを同じSQLで探せます。
コードで見る
チケットとナレッジの記事を持ち、新しい問い合わせに近い記事を意味で探します。答えを見つける中心だけを取り出したコードです。
import alopex
import numpy as np
db = alopex.Database.open("zendesk.alopex")
db.execute_sql("CREATE TABLE IF NOT EXISTS tickets (id INTEGER PRIMARY KEY, subject TEXT)")
db.execute_sql("""
CREATE TABLE IF NOT EXISTS articles (
id INTEGER PRIMARY KEY,
title TEXT,
body TEXT,
embedding VECTOR(4)
)
""")
articles = [
(1, "パスワードの再設定", "ログインできないとき", [0.9, 0.1, 0.0, 0.0]),
(2, "請求書の発行", "領収書と請求のまとめ", [0.0, 0.0, 0.9, 0.1]),
(3, "ログインの二段階認証", "認証アプリの設定", [0.8, 0.2, 0.0, 0.0]),
]
for aid, title, body, emb in articles:
db.execute_sql("INSERT INTO articles (id, title, body, embedding) VALUES (?, ?, ?, ?)", [aid, title, body, np.array(emb, dtype=np.float32)])
# 新しい問い合わせ(ログインできない)に近いナレッジ記事を、意味で探す
db.execute_sql("INSERT INTO tickets (id, subject) VALUES (?, ?)", [1, "ログインできない"])
query = np.array([0.95, 0.05, 0.0, 0.0], dtype=np.float32)
rows = db.execute_sql("""
SELECT title, vector_similarity(embedding, ?, 'cosine') AS score
FROM articles
ORDER BY score DESC
LIMIT 2
""", [query])
for row in rows:
print(round(row["score"], 3), row["title"])新しい問い合わせの埋め込みに近い記事が、上位に並びます。過去の答えとナレッジから、担当者がすぐ候補を出せます。
チケット、記事、意味検索を一つのデータベースに持てるAlopex DBで、答えがすぐ見つかるサポート窓口を試作してみませんか。最初の一歩はクイックスタートです。