
ãã¯ãã«ããŒã¿ããŒã¹ Pinecone ã詊ã
ãã¯ãã«ããŒã¿ããŒã¹ãPineconeãã詊ããã®ã§ãäœ¿ãæ¹ããŸãšããŸããã
1. Pinecone
ãPineconeãã¯ãã·ã³ãã«ãªAPIãæäŸãããã«ãããŒãžããªãã¯ãã«ããŒã¿ããŒã¹ã§ãã髿§èœãªãã¯ãã«æ€çŽ¢ã¢ããªã±ãŒã·ã§ã³ãç°¡åã«æ§ç¯ããããšãã§ããŸãã
ãPineconeãã®ç¹åŸŽã¯ã次ã®ãšããã§ãã
ã»é«é : æ°ååã®ããŒã¿ããã£ãŠããã¯ãšãªã¯é«éã
ã»ãã¬ãã·ã¥ : ããŒã¿ã®è¿œå ã»ç·šéã»å逿ã«ãã€ã³ããã¯ã¹ãåçæŽæ°ã
ã»ãã£ã«ã¿ãªã³ã° : ãã¯ãã«æ€çŽ¢ãšã¡ã¿ããŒã¿ãã£ã«ã¿ãçµã¿åãããŠãããé¢é£æ§ã®é«ãããŒã¿ããã°ããååŸã
ã»ãã«ãããŒãžã : éå§ã䜿çšãã¹ã±ãŒãªã³ã°ãç°¡åã§ã¹ã ãŒãºã§å®å šã
2. å©çšæé
ãPineconeãã®å©çšæéã¯ã次ã®ãšããã§ãã
ç¡æãã©ã³ã§è©Šçšã§ããŸãããéã¢ã¯ãã£ãç¶æ
ã7æ¥éç¶ããšåé€ãããŸãã
3. ããŒã³ã³ã»ãã
ãPineconeãã®ããŒã³ã³ã»ããã¯ã次ã®ãšããã§ãã
â ãã¯ãã«æ€çŽ¢
ããã¯ãã«æ€çŽ¢ãã¯ãMLã§çæããããŒã¿è¡šçŸ (ãã¯ãã«åã蟌ã¿) ãã€ã³ããã¯ã¹åããŠãé¡äŒŒèŠçŽ ãé«éã«æ€çŽ¢ããŸãã
â ãã¯ãã«åã蟌ã¿
ããã¯ãã«åã蟌ã¿ãã¯ããªããžã§ã¯ããè¡šãæµ®åå°æ°é
åã§ãããªããžã§ã¯ãã®æå³çé¡äŒŒæ§ããã£ããã£ããæ
å ±ã«ãªããŸãã
â ãã¯ãã«ããŒã¿ããŒã¹
ããã¯ãã«ããŒã¿ããŒã¹ãã¯ãå¹ççãªç®¡çãšæ€çŽ¢ã®ããã«ããã¯ãã«åã蟌ã¿ãã€ã³ããã¯ã¹åããŠä¿åããããŒã¿ããŒã¹ã§ãã
4. ãŠãŒã¹ã±ãŒã¹
ãPineconeãã®ãŠãŒã¹ã±ãŒã¹ã¯ã次ã®ãšããã§ãã
â ã»ãã³ãã£ãã¯ããã¹ãæ€çŽ¢
ãTransformerãã§ããã¹ãããã¯ãã«åã蟌ã¿ã«å€æãããPineconeãã§ãã¯ãã«åã蟌ã¿ãã€ã³ããã¯ã¹åããã³æ€çŽ¢ããŸãã
â 質åå¿ç
äžé£ã®è³ªåã®åã蟌ã¿ãã¯ãã«ãã€ã³ããã¯ã¹åããæ°ãã質åã«å¯ŸããŠæãé¡äŒŒããçµæãååŸããŸãã
â ç»åé¡äŒŒæ€çŽ¢
ç»åããŒã¿ããã¯ãã«åã蟌ã¿ã«å€æãããPineconeãã§ãã¯ãã«åã蟌ã¿ãã€ã³ããã¯ã¹åããã³æ€çŽ¢ããŸãã
â ååã¬ã³ã¡ã³ããŒã·ã§ã³
ãŠãŒã¶ãŒã衚ããã¯ãã«ã«åºã¥ããECåãã®ååã¬ã³ã¡ã³ããŒã·ã§ã³ãçæããŸãã
5. APIããŒã®ååŸ
ãPineconeãã®APIããŒã®ååŸæé ã¯ã次ã®ãšããã§ãã
(1) ãPineconeãã®ãµã€ããéãããSign Up Freeããã¿ã³ãããã°ã€ã³ã
ã³ã³ãœãŒã«ã衚瀺ãããŸãã

(2) ãAPI KeysããéžæããAPIããŒãååŸã

6. Colabã§ã®å®è¡
Google Colabã§ã®Pineconeã®å®è¡æé ã¯ã次ã®ãšããã§ãã
(1) ããã±ãŒãžã®ã€ã³ã¹ããŒã«ã
# ããã±ãŒãžã®ã€ã³ã¹ããŒã«
!pip install pinecone-client(2) Pineconeã®åæåã
<Pinecone_APIããŒ>ã«ã¯èªåã®Pineconeã®APIããŒãæå®ããŸãã
import pinecone
# Pineconeã®åæå
pinecone.init(
api_key="<Pinecone_APIããŒ>",
environment="us-west1-gcp"
)(3) ã€ã³ããã¯ã¹ã®äœæã
8次å
ãã¯ãã«ã®ãŠãŒã¯ãªããè·é¢ã¡ããªãã¯ã䜿çšããŠè¿äŒŒæè¿åæ€çŽ¢ãå®è¡ãããquickstartããšããååã®ã€ã³ããã¯ã¹ãäœæããŸãã
# ã€ã³ããã¯ã¹ã®çæ
pinecone.create_index(
"quickstart",
dimension=8,
metric="euclidean",
pod_type="p1"
)metricã¯ã次ã®ãšããã§ãã
ã»euclidean (ãŠãŒã¯ãªããè·é¢) : ãã¯ãã«éã®ç©ççè·é¢ã枬å®ããå¿ èŠãããå Žåã«äœ¿çšãç»åãé³å£°ãªã©ã®é¡äŒŒæ§æž¬å®ã«æå¹ã
ã»cosine (ã³ãµã€ã³é¡äŒŒåºŠ) : ãã¯ãã«ã®åãã«ããé¡äŒŒæ§ã枬å®ããå¿ èŠãããå Žåã«äœ¿çšãææžãåèªãªã©ã®é¡äŒŒæ§æž¬å®ã«æçšã
ã»dotproduct (ãããç©) : ãã¯ãã«ã®åããšå€§ããã«ããé¡äŒŒæ§ã枬å®ããå¿ èŠãããå Žåã«äœ¿çšã
pod_typeã¯ã次ã®ãšããã§ãã
ã»s1 : äœã³ã¹ãã§äœã¹ã«ãŒããããªãäœã³ã¹ãã¿ã€ãã
ã»p1 : é©åºŠãªæ€çŽ¢ã¬ã€ãã³ã·ãŒã§ã¹ã«ãŒããããªããã©ã³ã¹ã¿ã€ãã
ã»p2 : äœæ€çŽ¢ã¬ã€ãã³ã·ãŒã§é«ã¹ã«ãŒããããªãé«ããã©ãŒãã³ã¹ã¿ã€ãã
(4) ã€ã³ããã¯ã¹ã®ãªã¹ããååŸã
# ã€ã³ããã¯ã¹ã®ãªã¹ããååŸååŸ
pinecone.list_indexes()['quickstart'](5) ã€ã³ããã¯ã¹ã«æ¥ç¶ã
ã€ã³ããã¯ã¹ã«ã¯ãšãªããã«ã¯æ¥ç¶ããå¿
èŠããããŸãã
# ã€ã³ããã¯ã¹ã«æ¥ç¶
index = pinecone.Index("quickstart")(6) ããŒã¿ã®æ¿å ¥ã
# ããŒã¿ã®æ¿å
¥
index.upsert([
("A", [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]),
("B", [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2]),
("C", [0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3]),
("D", [0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4]),
("E", [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5])
]){'upserted_count': 5}(6) ã€ã³ããã¯ã¹ã®çµ±èšã®ååŸã
# ã€ã³ããã¯ã¹ã®çµ±èšã®ååŸ
index.describe_index_stats(){'dimension': 8,
'index_fullness': 0.0,
'namespaces': {'': {'vector_count': 5}},
'total_vector_count': 5}(7) é¡äŒŒã®ãã¯ãã«ã®ååŸã
Cãåãã§ãDãšBãæ¬¡ã«é¡äŒŒãããã®ã«ãªããŸãã
# é¡äŒŒã®ãã¯ãã«ã®ååŸ
index.query(
vector=[0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3],
top_k=3,
include_values=True
){'matches': [{'id': 'C',
'score': 0.0,
'sparseValues': {},
'values': [0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3]},
{'id': 'D',
'score': 0.0799999237,
'sparseValues': {},
'values': [0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4]},
{'id': 'B',
'score': 0.0800000429,
'sparseValues': {},
'values': [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2]}],
'namespace': ''}(8) ã€ã³ããã¯ã¹ã®åé€ã
å
ã®äœããªãç¶æ
ã«æ»ããŸãã
# ã€ã³ããã¯ã¹ã®åé€
pinecone.delete_index("quickstart")7. å¶éäºé
çŸåšã®ãPineconeãã®å¶éäºé ã¯ã次ã®ãšããã§ãã
â upsert
ãã¯ãã«ã®æå€§æ¬¡å
æ°ã¯ 20,000 ã§ãã
upsertãªã¯ãšã¹ãã®æå€§ãµã€ãºã¯ 2MB ã§ãã
upsertã®æšå¥šå¶éã¯ããªã¯ãšã¹ãããšã« 100ãã¯ãã« ã§ãã
upsertçŽåŸã®ã¯ãšãªã§ã¯ããã¯ãã«ã衚瀺ãããªãå ŽåããããŸããdescribe_index_stats()ã§åèšã調ã¹ãããšã«ããããã¯ãã«ãã€ã³ããã¯ã¹ä»ãããããã©ããã確èªã§ããŸããããŒã¿ããŒã¹ã¯çµææŽåæ§ããããŸãã
â ã¯ãšãª
è¿ãããçµææ° top_k ã®æå€§å€ã¯ 10,000 ã§ãã
include_metadata=True ãŸã㯠include_data=True ã®ã¯ãšãªã® top_k ã®æå€§å€ã¯ 1,000 ã§ãã
â ãã§ãããšåé€
ãã§ãããšåé€ã®ãªã¯ãšã¹ãããšã®æå€§ãã¯ãã«æ°ã¯ 1,000 ã§ãã
â åå空é
ã€ã³ããã¯ã¹ããšã®åå空éã®æ°ã«å¶éã¯ãããŸããã
â Podã®ã¹ãã¬ãŒãžå®¹é
s1 podã¯ã768次å
ã® 5Mãã¯ãã« ã§ãã
p1/p2 podã¯ã768次å
ã® 1Mãã¯ãã« ã§ãã
â ã¡ã¿ããŒã¿
ãã¯ã¿ãŒãããã®ã¡ã¿ããŒã¿ã®æå€§ãµã€ãºã¯ 10 KB ã§ãã
Null ã¡ã¿ããŒã¿å€ã¯ãµããŒããããŠããŸãããnull å€ãä¿æããããã«ããŒãèšå®ãã代ããã«ããã®ããŒãã¡ã¿ããŒã¿ãã€ããŒãããåé€ããŠãã ããã倧ããªã€ã³ããã¯ã¹å ã®å šãŠã®ãã¯ãã«ã®äžæã®å€ãªã©ãã«ãŒãã£ããªãã£ã®é«ãã¡ã¿ããŒã¿ã¯ãäºæ³ãããå€ãã®ã¡ã¢ãªãæ¶è²»ããpodããã£ã±ãã«ãªãåå ãšãªããŸãã